maven deploy plugin_Jar自动发布到maven中心库

1.简介

以前我们通过手工的方式可以发布jar到maven中心库(vitty:Jar发布到maven中心库)。本文是对这篇文章的延续,如果本文有些内容不易理解,请先通读手工发布的这篇文章。通过采取自动化构建,我们可以结合jenkins来实现jar自动发布至中心库。

相关视频:多模块jar自动发布到maven中央库-1080 - 知乎

2.步骤

2.1 setting.xml配置

<server>
                   

2.2 根pom.xml

<name>JDChain

2.3 编译发布

mvn clean deploy -P oss-release -Dmaven.test.skip=true

如果想自动发布,修改nexus-staging-maven-plugin 插件参数:<autoReleaseAfterClose>true</autoReleaseAfterClose>
如果想忽略某些模块,参考:注意事项-3)。

如果不采用jenkins自动发布,如下条目可忽略。

2.4 Jenkins相关配置

假定你已经配置好jenkins基础环境。并且在jenkins环境所在主机中已经完成了GPG的key生成和发布工作。

2.4.1 新建任务

源码管理

9d98d1118cf9ed89323dfab5dbe6bbdd.png

构建。大工程上传至oss服务器耗时较长,可以在“构建后操作”中设置邮件提示。

88df0bda337740e3ca39fd15611b1484.png

2.4.2 立即构建

44d7dc0e92fa76aabd32cdc3c3b997a2.png

2.4.3 控制台输出

点击构建历史的条目,“控制台输出”项会展示构建信息。

fcd01a414a3fca721e9196b3761e480c.png

2.4.4 手工release或者自动

<autoReleaseAfterClose>false</autoReleaseAfterClose>,为手工方式release,登陆:Nexus Repository Manager ,点击“Release”按钮。

<autoReleaseAfterClose>true</autoReleaseAfterClose>,则后台自动化完成release操作。

3.注意事项

1)自动化构建需要解决两方面的问题,使用gpg插件弹出密码框的问题。这个可通过不在maven命令行中输入:-Darguments="gpg.passphrase=",改用在setting.xml中定义的方式。

<profile>
      

2)针对发布到oss的临时库,是否也能够实现自动关闭-》自动发布?这个需要使用插件:nexus-staging-maven-plugin 来处理,autoReleaseAfterClose 参数控制。

<plugin>
 

3)项目中的某些模块是不需要发布的,发布时如何忽略?

如果使用原先的maven-deploy-plugin插件来控制staging过程,是无效的。需要采用staging自己的插件。

<plugin>
 

4)【废弃此小节】插件nexus-staging-maven-plugin放入根模块的pom.xml中时,所有模块都会上传到本地和远端库,skipNexusStagingDeployMojo设置未生效。

建议:将nexus-staging-maven-plugin放入常规非profile结构中。

5)mac中测试时,setting.xml配置中使用gpg2。mac中使用GPGSuite工具,有界面,比命令行直接下载的gpg更靠谱,默认生成即可,记得传送到证书服务器。

<profiles>

6)在多模块使用插件nexus-staging-maven-plugin(sonatype/nexus-maven-plugins)进行编译的时候,如果最后编译的一个模块忽略发布(<skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>),则会导致所有本地暂存jar无法上传到oss的暂存库,这是此插件的一个bug(The "skipNexusStagingDeployMojo" stops the entire nexus-staging-maven-plugin deploy if it is declared in last module of multi-module build)。所有如果你最后编译的jar使用了忽略发布,则再追加一个最后编译的赘头模块即可(不忽略发布)。这个bug害人不浅,我从昨天下午(2020.3.13)开始排查,各种尝试探索,晚上也琢磨,直到今天下午三点多算是完全解决。当面对一个未知问题,你不能凭借已有的经验快速解决,这时你的内心会起波澜,或彷徨或迷茫,此时分析方法和方向显得尤为重要,这些属于理论基础知识的范畴。讲这个事情,是希望看到本文的朋友,在学习实用技术的时候,也要加强理论知识的学习。这样在遇到未知新问题时,有助于快速解决。同时也鞭策自己加强这方面的学习。

后记:折腾这么久,把最终成功运行完成的结果记录一下,来怀念这逝去的青春...

周六愉快! 2020.3.14 23:16

5c8c4e5138716393452a4f74e7ccb92b.png

0b22357d2bbc99a5b447e5c57d5b6a35.png
红圈就是赘头模块
Uploaded to oss-rr: https://oss.sonatype.org:443/service/local/staging/deployByRepositoryId/comjd-1231/com/jd/blockchain/binary-proto/1.1.3.RELEASE/binary-proto-1.1.3.RELEASE.pom.asc (473 B at 384 B/s)
[INFO]  * Upload of locally staged artifacts finished.
[INFO]  * Closing staging repository with ID "comjd-1231".

Waiting for operation to complete...
........

[INFO] Remote staged 1 repositories, finished with success.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for JDChain 1.1.3.RELEASE:
[INFO] 
[INFO] JDChain ............................................ SUCCESS [  8.292 s]
[INFO] utils .............................................. SUCCESS [  6.946 s]
[INFO] utils-common ....................................... SUCCESS [ 11.052 s]
[INFO] utils-serialize .................................... SUCCESS [  4.561 s]
[INFO] utils-web-server ................................... SUCCESS [  1.558 s]
[INFO] utils-http ......................................... SUCCESS [ 10.091 s]
[INFO] utils-web .......................................... SUCCESS [  4.466 s]
[INFO] utils-test ......................................... SUCCESS [  1.422 s]
[INFO] base ............................................... SUCCESS [  8.114 s]
[INFO] binary-proto ....................................... SUCCESS [  5.521 s]
[INFO] crypto ............................................. SUCCESS [  4.757 s]
[INFO] crypto-framework ................................... SUCCESS [ 10.791 s]
[INFO] crypto-classic ..................................... SUCCESS [  6.073 s]
[INFO] crypto-sm .......................................... SUCCESS [  5.032 s]
[INFO] crypto-adv ......................................... SUCCESS [ 10.026 s]
[INFO] crypto-pki ......................................... SUCCESS [  4.433 s]
[INFO] runtime ............................................ SUCCESS [  0.030 s]
[INFO] runtime-context .................................... SUCCESS [  1.642 s]
[INFO] runtime-modular .................................... SUCCESS [  1.461 s]
[INFO] runtime-modular-booter ............................. SUCCESS [  1.370 s]
[INFO] ledger ............................................. SUCCESS [  2.040 s]
[INFO] ledger-model ....................................... SUCCESS [  7.580 s]
[INFO] storage ............................................ SUCCESS [  0.039 s]
[INFO] storage-service .................................... SUCCESS [  1.935 s]
[INFO] contract ........................................... SUCCESS [  2.261 s]
[INFO] contract-framework ................................. SUCCESS [  1.312 s]
[INFO] consensus .......................................... SUCCESS [  2.009 s]
[INFO] consensus-framework ................................ SUCCESS [  4.296 s]
[INFO] contract-jvm ....................................... SUCCESS [  1.593 s]
[INFO] ledger-core ........................................ SUCCESS [  4.552 s]
[INFO] ledger-rpc ......................................... SUCCESS [  4.264 s]
[INFO] sdk ................................................ SUCCESS [  1.902 s]
[INFO] sdk-base ........................................... SUCCESS [  5.064 s]
[INFO] sdk-client ......................................... SUCCESS [  3.788 s]
[INFO] tools .............................................. SUCCESS [  2.488 s]
[INFO] tools-keygen ....................................... SUCCESS [  3.584 s]
[INFO] contract-maven-plugin .............................. SUCCESS [  6.298 s]
[INFO] contract-samples ................................... SUCCESS [  2.377 s]
[INFO] consensus-bftsmart ................................. SUCCESS [  2.460 s]
[INFO] consensus-mq ....................................... SUCCESS [  3.177 s]
[INFO] storage-redis ...................................... SUCCESS [  1.788 s]
[INFO] storage-rocksdb .................................... SUCCESS [  1.783 s]
[INFO] storage-composite .................................. SUCCESS [  1.552 s]
[INFO] gateway ............................................ SUCCESS [  3.038 s]
[INFO] tools-initializer .................................. SUCCESS [  2.780 s]
[INFO] peer ............................................... SUCCESS [  2.598 s]
[INFO] manager ............................................ SUCCESS [  0.029 s]
[INFO] manager-model ...................................... SUCCESS [  3.145 s]
[INFO] manager-service .................................... SUCCESS [  3.187 s]
[INFO] manager-web ........................................ SUCCESS [  2.370 s]
[INFO] manager-booter ..................................... SUCCESS [  1.419 s]
[INFO] sdk-samples ........................................ SUCCESS [  2.705 s]
[INFO] tools-keygen-booter ................................ SUCCESS [  1.364 s]
[INFO] tools-initializer-booter ........................... SUCCESS [  1.670 s]
[INFO] test ............................................... SUCCESS [  0.029 s]
[INFO] test-consensus-client .............................. SUCCESS [  2.972 s]
[INFO] test-consensus-node ................................ SUCCESS [  2.452 s]
[INFO] test-ledger ........................................ SUCCESS [  1.749 s]
[INFO] test-integration ................................... SUCCESS [  4.549 s]
[INFO] deployment ......................................... SUCCESS [  0.033 s]
[INFO] deployment-gateway ................................. SUCCESS [  3.988 s]
[INFO] deployment-peer .................................... SUCCESS [  5.589 s]
[INFO] deployAsEnd ........................................ SUCCESS [06:54 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10:37 min
[INFO] Finished at: 2020-03-14T15:21:55+08:00
[INFO] ------------------------------------------------------------------------
Finished: SUCCESS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值