作为一个小菜鸟,有时羡慕大佬们有自己代码封装jar包,在项目中引入依赖即可使用,现在就来学习如何发布jar。
1.注册JIRA账号
注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
账号密码后面需要用到,邮箱用来接收消息进度反馈。
2. 创建issue
登录JIRA后,点击新建按钮
项目选址:Community Support - Open Source Project Repository Hosting (OSSRH)
问题类型选择:New Project
概要:填写代码的概述,或者随便填写都行,概要和描述填写可以宽泛一些,审核不是很严格
Group Id:填写拥有所有权的域名(例:cn.arnohand.xxxx),如没有域名可以查看:http://central.sonatype.org/pages/choosing-your-coordinates.html
Project URL:项目github地址
SCM url:项目github资源地址
Already Synced to Central:默认不变
只填写必填项即可,信息填完后直接点击确认即可。创建完成后Central OSSRH会在创建的issue下评论并给账户填写的邮箱发送邮件(有可能会因为有时差,需要等一天)。
这个可以用谷歌翻译下。大概意思如下:
您是否拥有arnohand.cn域? 如果是这样,请通过以下方法之一验证所有权:
引用此JIRA票证将TXT记录添加到DNS中:OSSRH-53063(最快)
设置重定向到您的Github页面(如果尚不存在)
如果您不拥有此域,请阅读:
http://central.sonatype.org/pages/choosing-your-coordinates.html
您也可以选择一个反映项目托管的groupId,在这种情况下,类似于io.github.arnohand或com.github.arnohand
这里要验证域名所有权,因为这是我自己的域名,所以我直接添加txt记录,记录值就是issues的url地址。
添加完成后需要评论回复,可访问https://issues.sonatype.org/browse/OSSRH-53063直接进入该issues。
审核成功后issues的状态变为RESOLVED:
并Central OSSRH会评论回复:
3.下载gpg
Windows系统直接去https://www.gpg4win.org/download.html下载gpg,安装完成后可通过gpg --version查看版本信息。出现版本信息则安装成功(Linux,可以通过yum install gpg安装)。
查看版本
gpg --version
生成GPG密钥对,密码发布jar时需要使用
gpg --gen-key
上传GPG公钥,B6E1F62DEF3F2A036EBC13924DF32C613C0108EB为密钥的ID
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys B6E1F62DEF3F2A036EBC13924DF32C613C0108EB
查看GPG密钥对
gpg --list-keys
4. 配置Maven的setting.xml
打开Maven的setting.xml文件,在servers中加入以下配置,这样我们才能将jar包部署到Sonatype OSSRH仓库
<server>
<id>ossrh</id>
<username>JIRA账户的账号</username>
<password>JIRA账户的密码</password>
</server>
5. 配置项目的pom.xml
根据Sonatype OSSRH的要求,以下信息都必须配置:
- Supply Javadoc and Sources
- Sign Files with GPG/PGP
- Sufficient Metadata
- Correct Coordinates
- Project Name, Description and URL
- License Information
- Developer Information
- SCM Information
pom.xml文件仅供参考,根据需要修改即可:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<licenses>
<license>
<name>Server Side Public License</name>
<url>https://www.mongodb.com/licensing/server-side-public-license</url>
<distribution>repo</distribution>
<comments>A not business-friendly OSS license</comments>
</license>
</licenses>
<scm>
<tag>master</tag>
<url>git@github.com:ArnoHand/modules.git</url>
<connection>scm:git:git@github.com:ArnoHand/modules.git</connection>
<developerConnection>scm:git:git@github.com:ArnoHand/modules.git</developerConnection>
</scm>
<developers>
<developer>
<name>Arno</name>
<email>arnohand@163.com</email>
<organization>Arno</organization>
</developer>
</developers>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</profile>
</profiles>
</project>
执行mvn clean deploy命令发布
mvn clean deploy
6.发布jar
使用JIRA账户登录https://oss.sonatype.org,登录成功后点击Staging Repositories或直接访问https://oss.sonatype.org/#stagingRepositories查看发布的jar。
选中对应的repository,点击colse按钮,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。release成功大概2个小时之后,就会同步到Maven中央仓库。