背景
继上一篇,已经成功尝试了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 关键知识点 #### 一、概述 - **产品文档与支持**:本指南旨在为用户提供关于 Urbancode Deploy(简称 uDeploy)的详细安装与配置指南,帮助用户快速上手并有效利用该平台进行部署...
"mvn-repo"这个术语通常指的是一个Maven仓库,它存储了各种依赖项,如JAR文件,供Maven项目在构建时引用。在这个场景中,"mvn-repo:我的个人 Maven 存储库"意味着创建者建立了一个私有的Maven仓库,用于存放自己的...
`mvn deploy:deploy-file` 用于将一个已存在的文件部署到远程仓库。这对于发布项目到私有仓库非常有用,可以指定文件的位置、版本、仓库URL等信息。 #### 15. `mvn install:install-file` 用于安装一个已存在的...
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-...
**aws-code-deploy** 是一个基于Bash脚本的工具,专为简化通过AWS Code Deploy进行应用程序部署而设计。这个工具特别适用于集成到持续集成(CI)系统中,如Travis CI、CircleCI和CodeShip,它能弥补这些CI服务在与...
使用`mvn clean`清除旧的构建产物,然后执行`mvn deploy`。 6. **查阅Maven官方文档和社区资源**:如果你仍然遇到困难,Maven的官方文档和开发者社区,如Stack Overflow,通常会提供更多的解决方案和讨论。 理解并...
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-...
7. **构建流程**:在Maven中,开发者可以通过命令行执行如`mvn install`,将项目打包并安装到本地仓库,或`mvn deploy`将项目发布到远程仓库,供其他项目使用。 总的来说,"sou4j-mvn-repo"是一个与Maven仓库相关的...
手动部署文件到远程仓库:`mvn deploy:deploy-file` 当需要手动部署文件到远程仓库时,可以使用该命令。例如: ``` mvn deploy:deploy-file -DgroupId=...
`mvn deploy:deploy-file`部署文件到Repository,例如: `mvn deploy:deploy-file -DgroupId=...
Maven 的强大之处在于其插件机制,`mvn jetty:run` 可以直接将项目部署到 Jetty 服务器运行,`mvn deploy:deploy-file` 用于上传自定义的 JAR 文件到远程仓库。 总之,理解并熟练使用这些 Maven 命令行,将有助于你...
deploy.hpi文件
标题中的"Node.js-deploy-to-kube"是一个工具或库,它简化了将Node.js应用程序部署到Kubernetes集群的过程。这个工具的目的是让开发者能够快速、便捷地将他们的Node.js应用推送到Kubernetes,而无需手动进行繁琐的...
**Python库 Django Code Deploy 0.9.65 深度解析** 在软件开发领域,特别是后端开发,Python以其简洁的语法和强大的库支持备受青睐。Django作为Python的一个高级Web框架,极大地简化了Web应用的构建过程。本文将...