a-cloud-all/.devops/scripts/maven.py

93 lines
2.5 KiB
Python
Raw Normal View History

2026-01-10 15:15:45 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Maven 打包和复制模块
"""
import os
import subprocess
import glob
from pathlib import Path
from .log import Logger
def run_maven(work_dir, maven_commands, source_path, target_dir):
"""
执行 Maven 打包和复制
参数
work_dir: 执行 maven 命令的目录
maven_commands: 执行的命令字符串
source_path: 复制的源路径支持通配符
target_dir: 复制的目标目录
返回
bool: 成功返回 True失败返回 False
"""
try:
# 转换为绝对路径
work_dir = Path(work_dir).resolve()
Logger.separator()
Logger.info("开始 Maven 打包")
Logger.separator()
Logger.info(f"执行目录: {work_dir}")
Logger.info(f"Maven 命令: {maven_commands}")
# 检查目录是否存在
if not work_dir.exists():
Logger.error(f"目录不存在: {work_dir}")
return False
# 执行 Maven 命令
Logger.info(f"执行命令: {maven_commands}")
result = subprocess.run(
maven_commands,
shell=True,
cwd=work_dir,
capture_output=True,
text=True
)
if result.returncode != 0:
Logger.error("Maven 打包失败")
if result.stderr:
Logger.error(f"错误信息: {result.stderr}")
return False
Logger.info("Maven 打包成功")
# 复制构建产物
Logger.separator()
Logger.info("开始复制构建产物")
Logger.separator()
source_full_path = work_dir / source_path
Logger.info(f"源路径: {source_full_path}")
Logger.info(f"目标目录: {target_dir}")
# 创建目标目录
Path(target_dir).mkdir(parents=True, exist_ok=True)
# 复制文件
files = glob.glob(str(source_full_path))
if not files:
Logger.error(f"未找到构建产物: {source_full_path}")
return False
for file in files:
file_path = Path(file)
dest = Path(target_dir) / file_path.name
Logger.info(f"复制文件: {file_path.name}")
import shutil
shutil.copy2(file, dest)
Logger.info("构建产物复制成功")
Logger.info("Maven 打包和复制完成")
return True
except Exception as e:
Logger.error(f"Maven 打包异常: {e}")
return False