此答案假定您有一个基于 maven 的项目并且它处于可打包状态。 mvn package 应该运行没有任何错误。
当发布到 maven Central 时,您需要使用一个组 ID 来识别您上传的所有工件。像in.ksharma 这样的东西。您还需要对工件进行签名,以便用户能够验证它们实际上来自您。
所以首先转到 sonatype jira 和 create an account,然后创建一个 jira 问题以使您的组 id 获得批准。类似this。
现在生成一个gpg keypair 来为您的工件签名:
$ gpg --gen-key
在~/.m2/settings.xml中定义这个键:
<profiles>
<profile>
<id>sonatype-oss-release</id>
<properties>
<gpg.keyname>B63EFB4D</gpg.keyname>
<gpg.passphrase>****</gpg.passphrase>
<gpg.defaultKeyring>true</gpg.defaultKeyring>
<gpg.useagent>true</gpg.useagent>
<gpg.lockMode>never</gpg.lockMode>
<gpg.homedir>/home/kshitiz/.gnupg</gpg.homedir>
</properties>
</profile>
</profiles>
修改项目的 pom 文件并将-SNAPSHOT 附加到您的版本。
所以0.0.1-BETA 变成了0.0.1-BETA-SNAPSHOT。否则maven would complain:
[ERROR] 未能执行目标
org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare
项目 log4j-weblayout 上的 (default-cli):您没有 SNAPSHOT
反应堆项目列表中的项目。 -> [帮助 1]
同时添加:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
这个父 pom 为您提供了一些现成的功能,例如配置 maven-gpg-plugin 来签署您的 JAR。
现在运行 mvn release:clean release:prepare 以生成您的工件和 gpg 签名。它会给你类似的东西:
log4j-weblayout-0.0.1-BETA-javadoc.jar.asc
log4j-weblayout-0.0.1-BETA-sources.jar.asc
log4j-weblayout-0.0.1-BETA.pom.asc
log4j-weblayout-0.0.1-BETA.pom
log4j-weblayout-0.0.1-BETA.jar.asc
log4j-weblayout-0.0.1-BETA-javadoc.jar
log4j-weblayout-0.0.1-BETA-sources.jar
log4j-weblayout-0.0.1-BETA.jar
现在将它们打包到一个 JAR 中:
jar -cvf bundle.jar log4j-weblayout-0.0.1-BETA*
转到Sonatype Nexus 并使用您的凭据登录。转到暂存上传并上传您的捆绑包。
然后转到staging repositories部分,选择您的存储库并单击发布(更多帮助here)。评论一下你已经发布了神器的jira问题,等待一段时间。
现在您的用户可以搜索和使用来自central repository 的工件: