#!/bin/bash # 单体服务构建脚本 # 作者: emotion-museum # 日期: 2025-07-21 set -e # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" } log_error() { echo -e "${RED}[ERROR]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" } # 检查Java环境 check_java() { log_info "检查Java环境..." if command -v java >/dev/null 2>&1; then JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2) log_success "Java版本: $JAVA_VERSION" else log_error "Java未安装或未配置环境变量" exit 1 fi } # 检查Maven环境 check_maven() { log_info "检查Maven环境..." if command -v mvn >/dev/null 2>&1; then MAVEN_VERSION=$(mvn -version | head -1 | awk '{print $3}') log_success "Maven版本: $MAVEN_VERSION" else log_error "Maven未安装或未配置环境变量" exit 1 fi } # 清理项目 clean_project() { log_info "清理项目..." mvn clean log_success "项目清理完成" } # 编译项目 compile_project() { log_info "编译项目..." mvn compile if [ $? -eq 0 ]; then log_success "项目编译成功" else log_error "项目编译失败" exit 1 fi } # 运行测试 run_tests() { log_info "运行测试..." mvn test if [ $? -eq 0 ]; then log_success "测试通过" else log_warning "测试失败,但继续构建" fi } # 打包项目 package_project() { log_info "打包项目..." mvn package -DskipTests if [ $? -eq 0 ]; then log_success "项目打包成功" else log_error "项目打包失败" exit 1 fi } # 验证构建结果 verify_build() { log_info "验证构建结果..." JAR_FILE="target/emotion-single-1.0.0.jar" if [ -f "$JAR_FILE" ]; then JAR_SIZE=$(du -h "$JAR_FILE" | cut -f1) log_success "JAR文件生成成功: $JAR_FILE (大小: $JAR_SIZE)" else log_error "JAR文件未生成" exit 1 fi } # 主函数 main() { log_info "🚀 开始构建emotion-single项目..." check_java check_maven clean_project compile_project run_tests package_project verify_build log_success "🎉 构建完成!" echo "" echo "📋 构建结果:" echo " JAR文件: target/emotion-single-1.0.0.jar" echo " 下一步: 运行 ./deploy.sh 部署到服务器" } # 执行主函数 main "$@"