持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
将Java项目的Jar包发送到Maven中央仓库基本上都是通过本地通过命令 mvn deploy
发布。平时很多Java开发者都会把项目放在GitHub上面,那么有没有一种方式在Github上面自动发布? 这就是笔者今天要说的Github Actions自动发布JAR到Maven中央仓库。
Tips: 想要了解正常情况下如何发布可以看一下笔者的这篇文章《将Jar包发布Maven中央仓库》
1. 前提条件
- 首先你之前通过正常的情况发布过Jar包到Maven中央仓库,这个是前提。
- 在Github创建一个Maven项目,笔者这里用 rain 作为例子
- OSSRH 账号、密码
2. 发布配置
2.1 创建项目
首先在Github上面创建项目:
然后需要注意增加两个Maven插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<!-- Prevent `gpg` from using pinentry programs -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.13</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>false</autoReleaseAfterClose>
</configuration>
</plugin>
具体可以参照rain 项目的pom
。
2.2 GPG信息获取
对于GPG信息首先是你已经存在。信息查看命令:
gpg --list-secret-keys
Tips: 不存在参照文章《将Jar包发布Maven中央仓库》生成
执行命令:
gpg -a --export-secret-keys KEYID
#例子
gpg -a --export-secret-keys 00053070D457FA43EF20B208E9AD13776C3E943D
这里需要保护私钥的密码,然后回出现下面的密文:
上面笔者就截图了一部分,复制需要将BEGIN和END那一行全部复制后续需要配置。
2.3 项目配置
配置路径: rain-->Settings-->Secrets-->Actions
2.4 配置Github Actions
笔者这里使用的是 action-maven-publish 这个Action,在项目下创建如下图文件:
然后编写maven-publish.yml
name: Publish package to the Maven Central Repository and GitHub Packages
on:
push:
branches:
- main
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- name: Set up Java for publishing to GitHub Packages
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
- name: Publish to GitHub Packages
run: mvn --batch-mode deploy -DskipTests -Prelease-github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release:
runs-on: ubuntu-18.04
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Install Java and Maven
uses: actions/setup-java@v1
with:
java-version: 11
- name: Release Maven package
uses: samuelmeuli/action-maven-publish@v1
with:
maven_profiles: 'release-ossrh'
maven_args: '-DskipTests'
gpg_private_key: ${{ secrets.gpg_private_key }}
gpg_passphrase: ${{ secrets.gpg_passphrase }}
nexus_username: ${{ secrets.OSSRH_USERNAME }}
nexus_password: ${{ secrets.OSSRH_TOKEN }}
说明:我上面还增加了发布到Github的。然后保存就行了。action就会自动运行。看一下效果:
执行完成发布后,需要登录到OSSRH close 发布的,然后就等待同步到Maven中央仓库。Maven中央仓库查询:
到这里就完成了。 后续你每次提交push到对应的分支就会存在自动发布。
我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢!
参考文档: