把你的项目发布到maven中央仓库(OSSRH)

参考

https://central.sonatype.org/pages/ossrh-guide.html

创建OSSRH JIRA账号

地址 https://issues.sonatype.org/secure/Signup!default.jspa

创建一个新的项目票据

如图:

微信截图_20200803110530.png

验证域名的所有权

顺利的话,会有人回复你,让你验证域名的所有权,一般有两种方法:

Do you own the domain qyh.me? If so, please verify ownership via one of the following methods:

Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-59639 (Fastest)
Setup a redirect to your Github page (if it does not already exist)

我选择了第一种,解析记录如下:

1596443333197.png

(我创建了两个txt记录,另一个主机记录是instd4j,就是我的项目id,如果主机记录@不行的话,就再增加一个试试)

认证通过后,很快会得到回复

me.qyh has been prepared, now user(s) wwwqyhme can:

Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshots
Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2
Release staged artifacts into repository 'Releases'

这样就有权限发布到它的库了

票据详情请见 https://issues.sonatype.org/browse/OSSRH-59639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

PGP

参考 https://central.sonatype.org/pages/working-with-pgp-signatures.html

https://www.gnupg.org/download/ 这里下载合适的版本,windows下面傻瓜式安装即可,安装完毕之后,打开cmd,运行命令

gpg --gen-key

输入一些信息之后,会让你输入 Passphrase,记住这个,后面签名要用到

创建完之后获取key

gpg --list-keys

会有如下输出:

1596444178469.png

复制红圈内文本,然后输入命令:

gpg --keyserver keys.openpgp.org  --send-keys 379C8CB6D2F83F2656B59F89A8F121861F3CADD9

通过以下命令测试:

gpg --keyserver keys.openpgp.org --recv-keys A8F121861F3CADD9

顺利的话会有如下输出:

1596444438853.png

至此pgp结束

pom文件

最小的pom文件请参考:https://central.sonatype.org/pages/requirements.html#sufficient-metadata

如果需要通过maven发布到 central.sonatype.org 具体的请看 https://central.sonatype.org/pages/apache-maven.html

https://repo1.maven.org/maven2/me/qyh/instd4j/0.1/instd4j-0.1.pom 这里可以看到完整的pom文件。

settings文件

如果通过maven发布,那么 settings文件还需要设置额外的凭证信息:

设置ossrh的用户名和密码

  <servers>
    <server>
      <id>ossrh</id>
      <username>wwwqyhme</username>
      <password>password</password>
    </server>
  </servers>

设置pgp的签名密码

<profile>
 <id>ossrh</id>
 <activation>
   <activeByDefault>true</activeByDefault>
 </activation>
 <properties>
   <gpg.executable>gpg</gpg.executable>
   <gpg.passphrase>password</gpg.passphrase>
 </properties>
</profile>

发布到 snapshot

发布到snapshot很简单,甚至不需要pgp签名、sources和javadoc

cd到你的项目目录,然后运行如下命令即可

mvn clean deploy

发布到release

运行如下命令即可

mvn clean deploy -P release

这里的release不是release到maven的中央仓库,而是放到了 https://oss.sonatype.org/content/repositories/releases/ 这里,发布之后,它会进行规则校验,通过规则后才可以发布,具体的规则如下:

捕获2.PNG

一般就是校验你的pom文件、souces.jar存不存在,javadoc存不存在和验证签名

关于javadoc,这个文件必须要有,如果因为注释等问题而无法生成,可以通过

 <configuration>
 <!--  add this to disable checking  -->
 <doclint>none</doclint>
 </configuration>

来避免

如果pgp签名不通过,看下有没有把公钥上传到密钥服务器

release之后,需要两个小时左右,才能在 search.maven.org 上找到你的项目,如果需要在 mvnrepository.com上找到,则需要更长的时间(我等了一晚上)

ExecutorService等待当前所有任务完成
Pebble 标签多个属性