如何使用Maven替代bash命令实现GitHub Package Registry自动部署
实现方案说明
该需求完全可实现,通过配置Maven配置文件和项目pom.xml即可直接通过mvn deploy命令完成部署,无需依赖bash脚本。
步骤1:配置Maven认证信息(settings.xml)
首先修改本地Maven配置文件(默认路径为~/.m2/settings.xml,Windows系统为C:\Users\你的用户名\.m2\settings.xml),添加GitHub Packages的认证信息:
<settings> <servers> <server> <!-- 此处id需要和后续pom.xml中的repositoryId保持一致 --> <id>github</id> <username>你的GitHub用户名</username> <!-- 密码为GitHub Personal Access Token,需要勾选write:packages、read:packages、repo权限 --> <password>你的GitHub访问令牌</password> </server> </servers> </settings>
步骤2:配置项目pom.xml
根据你的部署参数,pom.xml需要补充如下配置:
<project> <!-- 基础信息需要和你之前部署参数保持一致 --> <groupId>com.soma</groupId> <artifactId>my-module</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <!-- 部署仓库配置 --> <distributionManagement> <repository> <id>github</id> <url>https://maven.pkg.github.com/你的GitHub用户名/my-artifacts</url> </repository> </distributionManagement> <!-- GitHub Packages强制要求的必填配置,缺失会部署失败 --> <licenses> <license> <name>MIT License</name> <url>https://opensource.org/licenses/MIT</url> </license> </licenses> <developers> <developer> <id>你的GitHub用户名</id> <name>你的名称</name> </developer> </developers> <scm> <connection>scm:git:git@github.com:你的GitHub用户名/my-artifacts.git</connection> <url>https://github.com/你的GitHub用户名/my-artifacts</url> </scm> <!-- 如果是部署当前项目编译生成的jar,不需要额外配置插件;如果是部署本地已存在的第三方jar,需要添加如下插件配置 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>deploy</phase> <goals> <goal>deploy-file</goal> </goals> <configuration> <file>本地jar包路径,例如./my-module.jar</file> <groupId>com.soma</groupId> <artifactId>my-module</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <repositoryId>github</repositoryId> <url>https://maven.pkg.github.com/你的GitHub用户名/my-artifacts</url> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
步骤3:执行部署
配置完成后,直接在项目根目录执行以下命令即可完成部署:
mvn deploy
常见注意事项
- 生成GitHub Personal Access Token时,必须勾选
write:packages、read:packages、repo三个权限,否则会部署报错401或403 - pom.xml中填写的GitHub用户名、仓库名必须和实际地址一致,否则会出现404错误
- 若为多模块项目,
distributionManagement节点可以统一放到父pom.xml中,子模块无需重复配置
内容的提问来源于stack exchange,提问作者João Paraná
相关产品推荐
相关产品推荐

