GitHub Action无法上传Jar包至GitHub Packages问题求助
解决GitHub Action部署BW6应用时Maven settings.xml找不到的问题
问题分析
错误提示指定的settings.xml文件不存在,但你确认文件实际存在,且前序mvn clean和mvn install命令正常执行,核心问题大概率出在路径有效性、Runner执行上下文或命令配置细节上。
解决方案
1. 替换硬编码用户路径为环境变量
避免直接写死C:\Users\{user}\.m2\settings.xml,改用Windows系统的%USERPROFILE%环境变量自动获取当前用户目录,确保路径适配Runner的执行用户:
- name: Publish to GitHub Packages Apache Maven run: mvn package -s "%USERPROFILE%\.m2\settings.xml" -f src/{appname}/pom.xml env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
额外建议:在发布步骤前添加
whoami命令,确认Runner实际执行的用户,验证路径是否匹配:- name: Check current user run: whoami
2. 检查文件权限
确保GitHub Action Runner的执行用户对settings.xml文件有读取权限:
- 右键文件→属性→安全选项卡
- 添加Runner执行用户(比如服务账户)并授予读取权限
3. 优化Maven发布命令
- 你已经执行了
mvn install,重复执行mvn package无意义,建议直接用deploy目标完成发布(需提前在pom.xml配置distributionManagement):- name: Publish to GitHub Packages Apache Maven run: mvn deploy -s "%USERPROFILE%\.m2\settings.xml" -f src/{appname}/pom.xml env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - 必须指定
-f参数指向正确的pom文件路径,避免Maven在工作目录根目录寻找pom导致异常。
4. 改用工作流内配置Maven settings(推荐)
依赖本地settings.xml容易受环境影响,建议用actions/setup-java动作直接在工作流中配置GitHub Packages认证,无需依赖本地文件:
- name: Set up JDK and Maven settings uses: actions/setup-java@v3 with: java-version: 11.0.16+8 distribution: 'adopt' cache: maven server-id: github # 需与pom.xml中distributionManagement的repository.id一致 server-username: GITHUB_ACTOR server-password: GITHUB_TOKEN - name: Publish to GitHub Packages run: mvn deploy -f src/{appname}/pom.xml env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
同时确保pom.xml中已配置GitHub Packages仓库:
<distributionManagement> <repository> <id>github</id> <name>GitHub Packages</name> <url>https://maven.pkg.github.com/你的用户名/你的仓库名</url> </repository> </distributionManagement>
内容的提问来源于stack exchange,提问作者Niladri Dey
相关产品推荐
相关产品推荐

