GitHub Actions自托管Runner无预装Maven时如何使用mvn命令
无预装、无第三方Action场景下使用mvn命令的方案
不需要管理员权限修改Runner全局环境,也不需要依赖未验证的第三方Action,两种方案均可直接落地:
方案1:工作流内临时下载配置Maven
所有操作仅对当前运行的Job生效,不会修改Runner的全局配置,Job运行结束后临时文件自动清理,完全符合操作限制。
在执行mvn相关命令前插入如下步骤即可:
steps: - name: 临时配置Maven运行环境 run: | # 按需替换为你需要的Maven版本,可使用内网镜像地址提升下载速度 wget -q <Maven二进制压缩包对应地址> tar -xzf apache-maven-*-bin.tar.gz -C $HOME # 将Maven执行路径加入当前Job的环境变量 echo "$HOME/apache-maven-*/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$HOME/apache-maven-*" >> $GITHUB_ENV - name: 验证Maven可用性 run: mvn -v
Windows环境Runner可替换为PowerShell对应下载、解压、路径配置命令,逻辑完全一致。
方案2:使用GitHub官方setup-java Action自动配置Maven
actions/setup-java是GitHub官方维护的可信Action,不存在账号未验证被拦截的问题,本身内置了Maven自动配置能力,不需要额外依赖第三方setup-maven类Action,配置更简洁:
steps: - uses: actions/checkout@v4 - name: 配置JDK与Maven环境 uses: actions/setup-java@v4 with: java-version: '17' # 替换为项目实际使用的JDK版本 distribution: 'temurin' maven-version: '3.9.6' # 指定需要的Maven版本,Action自动完成下载配置 - name: 执行Maven构建 run: mvn clean package
补充说明
- 两种方案均不需要管理员权限,不会修改Runner的预装软件目录,符合管理员的操作限制
- 如需自定义Maven配置(如私有制品库地址、代理配置),可在环境配置完成后,向
~/.m2/settings.xml写入对应配置即可,不影响mvn命令正常运行 - 如果内网有统一的Maven二进制包缓存源,优先使用内网地址下载,避免公网访问限制影响流程稳定性
内容的提问来源于stack exchange,提问作者Ryuhei Irie
相关产品推荐
相关产品推荐

