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: 复制的目标目录
|
|
|
|
|
|
|
|
|
|
|
|
返回:
|
2026-01-27 18:14:28 +08:00
|
|
|
|
tuple: (success: bool, error_message: str) 成功返回 (True, ""),失败返回 (False, "错误信息")
|
2026-01-10 15:15:45 +08:00
|
|
|
|
"""
|
|
|
|
|
|
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():
|
2026-01-27 18:14:28 +08:00
|
|
|
|
error_msg = f"目录不存在: {work_dir}"
|
|
|
|
|
|
Logger.error(error_msg)
|
|
|
|
|
|
return False, error_msg
|
2026-01-10 15:15:45 +08:00
|
|
|
|
|
|
|
|
|
|
# 执行 Maven 命令
|
2026-01-10 15:21:06 +08:00
|
|
|
|
if not Logger.run_command(maven_commands, work_dir):
|
2026-01-27 18:14:28 +08:00
|
|
|
|
error_msg = "Maven 编译失败,请查看日志获取详细错误信息"
|
|
|
|
|
|
Logger.error(error_msg)
|
|
|
|
|
|
return False, error_msg
|
2026-01-10 15:15:45 +08:00
|
|
|
|
|
|
|
|
|
|
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:
|
2026-01-27 18:14:28 +08:00
|
|
|
|
error_msg = f"未找到构建产物: {source_full_path}"
|
|
|
|
|
|
Logger.error(error_msg)
|
|
|
|
|
|
return False, error_msg
|
2026-01-10 15:15:45 +08:00
|
|
|
|
|
|
|
|
|
|
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 打包和复制完成")
|
2026-01-27 18:14:28 +08:00
|
|
|
|
return True, ""
|
2026-01-10 15:15:45 +08:00
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
2026-01-27 18:14:28 +08:00
|
|
|
|
error_msg = f"Maven 打包异常: {str(e)}"
|
|
|
|
|
|
Logger.error(error_msg)
|
|
|
|
|
|
return False, error_msg
|