From c0be75474f71901e81f178034e5a5694c143027e Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Sun, 19 Jul 2026 01:06:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B9=E7=94=A825=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3/=EF=BC=8C=E7=A1=AE=E4=BF=9DJAVA=5FHOM?= =?UTF-8?q?E=E6=AD=A3=E7=A1=AE=E4=BC=A0=E9=80=92=E5=88=B0Maven=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/release.yml | 56 +++++++++++++++++++++++++++--------- pom.xml | 3 +- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 5c4c0aa..2ae6d1f 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -14,32 +14,59 @@ jobs: - name: Setup Build Tools run: | set -e + echo "=== Setting up build environment ===" + # 1) 定位服务器已安装的最高版本 JDK —— 绝不安装新 JDK,避免版本冲突 # 优先检查 sdkman 管理的 JDK + SDKMAN_JAVA_HOME="" if [ -f "$HOME/.sdkman/bin/sdkman-init.sh" ]; then + echo "Found sdkman, initializing..." source "$HOME/.sdkman/bin/sdkman-init.sh" - sdk list java 2>/dev/null | grep installed | tail -1 | awk '{print $NF}' | xargs sdk use java 2>/dev/null || true + # 获取sdkman当前使用的Java版本路径 + SDKMAN_JAVA_HOME=$(sdk current java 2>/dev/null | grep -oP 'java-home:\s*\K.*' || true) + echo "sdkman JAVA_HOME: $SDKMAN_JAVA_HOME" fi # 检查 /usr/lib/jvm 下的 JDK - JAVA_HOME="" + SYS_JAVA_HOME="" if [ -d "/usr/lib/jvm" ]; then # 尝试找 Java 25 - JAVA_HOME=$(find /usr/lib/jvm -name "java-*25*" -type d -print 2>/dev/null | head -1) + SYS_JAVA_HOME=$(find /usr/lib/jvm -name "java-*25*" -type d -print 2>/dev/null | head -1) # 如果没有 Java 25,找最高版本 - if [ -z "$JAVA_HOME" ]; then - JAVA_HOME=$(ls -d /usr/lib/jvm/java-* 2>/dev/null | sort -V | tail -1) + if [ -z "$SYS_JAVA_HOME" ]; then + SYS_JAVA_HOME=$(ls -d /usr/lib/jvm/java-* 2>/dev/null | sort -V | tail -1) fi + echo "System /usr/lib/jvm JAVA_HOME: $SYS_JAVA_HOME" fi # 如果还没找到,用 which java 定位 - if [ -z "$JAVA_HOME" ] || [ ! -x "$JAVA_HOME/bin/java" ]; then - JAVA_HOME=$(dirname $(dirname $(command -v java))) + WHICH_JAVA_HOME="" + if command -v java >/dev/null 2>&1; then + WHICH_JAVA_HOME=$(dirname $(dirname $(command -v java))) + echo "which java JAVA_HOME: $WHICH_JAVA_HOME" fi - export JAVA_HOME + # 选择最佳的JAVA_HOME:优先sdkman > 系统 > which + JAVA_HOME="" + if [ -n "$SDKMAN_JAVA_HOME" ] && [ -d "$SDKMAN_JAVA_HOME" ] && [ -x "$SDKMAN_JAVA_HOME/bin/java" ]; then + JAVA_HOME="$SDKMAN_JAVA_HOME" + echo "Using sdkman JAVA_HOME: $JAVA_HOME" + elif [ -n "$SYS_JAVA_HOME" ] && [ -d "$SYS_JAVA_HOME" ] && [ -x "$SYS_JAVA_HOME/bin/java" ]; then + JAVA_HOME="$SYS_JAVA_HOME" + echo "Using system JAVA_HOME: $JAVA_HOME" + elif [ -n "$WHICH_JAVA_HOME" ] && [ -d "$WHICH_JAVA_HOME" ] && [ -x "$WHICH_JAVA_HOME/bin/java" ]; then + JAVA_HOME="$WHICH_JAVA_HOME" + echo "Using which java JAVA_HOME: $JAVA_HOME" + else + echo "ERROR: No valid JDK found!" + exit 1 + fi + + # 导出JAVA_HOME到GITHUB_ENV(后续步骤可用) echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "JAVA_HOME=$JAVA_HOME" + export JAVA_HOME + echo "=== Final JAVA_HOME: $JAVA_HOME ===" + java -version # 2) 确保 Maven 可用 —— 优先用系统已安装的(sdkman/dnf),没有才下载二进制 MVN_BIN="" @@ -70,13 +97,16 @@ jobs: # 把 Maven 所在目录加入 PATH MVN_DIR=$(dirname "$MVN_BIN") echo "PATH=$MVN_DIR:$JAVA_HOME/bin:$PATH" >> $GITHUB_ENV - echo "Java version:" - java -version - echo "Maven version:" + echo "=== Maven version ===" "$MVN_BIN" -version - name: Build with Maven - run: mvn -B clean package -DskipTests + run: | + # 显式设置JAVA_HOME环境变量(从GITHUB_ENV读取) + export JAVA_HOME="${{ env.JAVA_HOME }}" + echo "Using JAVA_HOME for Maven build: $JAVA_HOME" + java -version + mvn -B clean package -DskipTests - name: Verify JAR run: ls -la target/*.jar diff --git a/pom.xml b/pom.xml index b5986a1..8801b5f 100644 --- a/pom.xml +++ b/pom.xml @@ -51,8 +51,7 @@ maven-compiler-plugin 3.15.0 - 25 - 25 + 25 UTF-8