背景
继上一篇,已经成功尝试了deploy到google svn上,接下来尝试deploy到maven central repo
过程
参考资料:http://maven.apache.org/guides/mini/guide-central-repository-upload.html
我这里选择的是Sonatype Oss Responitory做为目标仓库,由sonatype会定时同步到mvn central repo
sonatype的发布步骤:
步骤一:
创建一个jira,填写相应的project信息,我这里创建了一个:https://issues.sonatype.org/browse/OSSRH-1898
主要填写的内容:
- 帐户名/邮箱
- groupId , artifactId信息, project url
步骤二:
耐心等待sonatype管理员的审核,审核通过后,会给你发送邮件,比如加入了它们的mail list,还有对应的mvn repo相关信息
步骤三:
调整pom.xml,添加相关的信息:
- <modelVersion>
- <groupId>
- <artifactId>
- <version>
- <packaging>
- <name>
- <description>
- <url>
- <licenses>
- <scm><url>
- <scm><connection>
- <developers>
<scm> <url>git@github.com:agapple/mapping4java.git</url> <connection>scm:git:git@github.com:agapple/mapping4java.git</connection> <developerConnection>scm:git:git@github.com:agapple/mapping4java.git</developerConnection> </scm>
修改pom.xml,添加sonatype做为父工程,主要是继承其相关的pom配置
<parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent>
最后修改一下settings.xml文件中,添加对应的deploy server的username/password
<servers> <server> <id>sonatype-nexus-snapshots</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> <server> <id>sonatype-nexus-staging</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> </servers>
这里的sonatype-nexus-snapshots,sonatype-nexus-staging都是一个约定,都是通过继承了sonatype pom.xml,可以简化了自己比较多的配置。
步骤四:
测试一下snapshot版本的deploy 运行:
mvn clean deploy
最后,通过Nexus UI进行查看:
步骤五:
尝试一下稳定版本的release.
运行:
$ mvn release:clean export GPG_TTY=$(tty) $ mvn release:prepare
运行过程中,会要求输入你对应的版本号信息。
继续下去,会提示你输入对应的PGP密码,相关参考文档: (https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven)
第一次的化,需要生成一个PGP
$sudo apt-get install gnupg $gpg --gen-key
按照它的提示,一直默认下去,只需要输入一下自己的name , email , comment,最后会要求你输入一个密码。注意这个密码就是mvn release:prepare需要输入的密码
截一张图看下,可以看下它的提示文字,国外的还是挺可爱的!
最后提交一下public key , gpg --keyserver hkp://pool.sks-keyservers.net --send-keys XXX
步骤六:
生成PGP密钥后,mvn release:prepare就可以正常通过。
最后运行一下:
mvn release:perform
第一次提交,会遇到401错误。
401错误主要是认证失败,继续给管理员留言,请求处理。
补充:
测试过程中,发现使用mvn release:preform一直出现401错误,使用tcpdump进行抓包后,蓦然发现抓到的数据全都是乱码,使用了https。无奈
最后,使用了手工release的方式:
mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0.jar mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0-sources.jar -Dclassifier=sources mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0-javadoc.jar -Dclassifier=javadoc
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.7</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <encoding>${file_encoding}</encoding> <charset>${file_encoding}</charset> <doclet>org.jboss.apiviz.APIviz</doclet> <docletArtifact> <groupId>org.jboss.apiviz</groupId> <artifactId>apiviz</artifactId> <version>1.3.0.GA</version> </docletArtifact> <useStandardDocletOptions>true</useStandardDocletOptions> <breakiterator>true</breakiterator> <version>true</version> <author>true</author> <keywords>true</keywords> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
说明: 这里使用了apiviz进行javadocs类图生成,效果如下
步骤七按照文档的要求,给管理员留言,继续等待审核
步骤八
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide,按照这里的8. Release It进行release操作,最后就安心的等待同步到mvn central repo。
感触
整个过程下来,还是比较繁琐的,是一次比较不错的体验。希望自己能够多多坚持,多多完善相关的代码。
相关推荐
mvn-repo-cleaner -Maven资源库清理器是用于清理开发人员盒上本地.m2目录的实用程序。 随着新版本的从属库出现,旧的库已过时并且永远不会被清除。 该程序通过删除下载到.m2目录的旧版本库来帮助释放一些磁盘空间。...
Urbancode Deploy User Guide
maven deploy the local file to a remote server. 1.config your pom.xml; 2.config your setting.xml; 3.execte cmd --- mvn deploy
#使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个maven应用程序,用于使用以下组件a来自动化构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...
yolov8系列--A repo that uses TensorRT to deploy wll-trained
How To Deploy Kamailio on Linux
使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个Maven应用程序,用于使用以下组件a来自动进行构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...
aws-code-deploy:Bash脚本,可通过AWS Code Deploy轻松部署应用程序。 设计用于与TravisCI,CircleCI和CodeShip等CI系统配合使用,并提供这些供应商的现成解决方案中未包含的功能
git-push-deploy:搭建一个你能够git push部署的远程repo
deploy.hpi文件
how to identify,develop,deploy,and connect talents when companies transform to global integrated enterprise the case of advantech
Deploy an OpenStack private cloud to a Hadoop MapReduce environment
cd loopback-deploy-to-gcp gcloud auth login gcloud config set project loopbackers 用您自己的 GCP 项目 ID 替换环回器 gcloud preview app run app.yaml gcloud preview app deploy app.yaml gcloud ...
deploy-to-kube:只需一个命令就能将node.js程序部署到Kubernetes,无需配置
deploy.prototxt
Code_deploy 提交到src代码
代码部署实验室本实验旨在展示如何使用AWS Code Build,AWS Code Deploy创建AWS Code Pipeline。 此Amazon Web Services AWS Code Deploy安装程序(EC2,IAM,Github)教程展示了如何让AWS EC2实例托管Github存储库...
WePay Java SDK 该API实现了WePay API的v2。... mvn release:perform mvn clean deploy; mvn release:clean; mvn release:prepare; mvn release:perform如何使用首先,熟悉其API的工作方式(请参见上面
angular deploy.doc