前言
最近闲下来了,想要自己造点小轮子用,方便自己在不同项目使用,同时想偷懒,不想每次都在项目里面copy代码。于是想到了重要仓库这个东西,把自己的代码托管到github(虽然现在的github已经不再单纯),然后发布jar包到maven中央仓库,以后每个项目都只用引入maven依赖就可以了。同时还能方便好基友们使用,万一哪一天好基友高兴就献身了呢,想想就有点小激动呢。好了废话不多说,下面正式开始手把手教学活动。
将项目发布到maven仓库需要以下几步:
1.在sonatype中创建issue
2.使用gpg生成秘钥
3.配置Maven进行deploy和release
1 在sonatype中创建issue
首先我们需要在https://issues.sonatype.org/secure/Dashboard.jspa中新建一个issues。如果没有sonatype账号的话,分分钟注册一个
创建完成后就是如下图示
这个时候只需要耐心等待工作人员审核就行了,因为我的domain问题,经历了二次审核,但是都很快,一般提交后两个小时内就会有结果。当issues状态变为Resolved就可以继续下一步操作了。
2 使用gpg生成秘钥
2.1 安装
选择对应的OS版本进行下载安装即可,下载地址传送门:https://www.gnupg.org/download/index.html
2.2 生成key
首先查看安装成功没有
gpg –version
(MAC 和 Linux系统需要 gpg2 –version)
通过
gpg –gen-key
生成key,也可以通过UI界面生成和管理key
运行后gpg要求你选择加密算法,过期时间等等,这些直接选择默认值即可。通过对比发现,gpg 2.0以上的版本运行gpg –gen-key命令 会跳过这些步骤。
之后gpg要求你输入姓名,邮箱以及关键的Passphrase,依次输入即可。然后gpg为你生成了一对秘钥。
通过
gpg –list-keys
查看生成的key列表
这里可以看到我的公钥是:34754DFE562C10E1A09907B7F4797C9A95E36DB6,记住这个key,下面我们需要用到。
2.3 上传公钥
生成秘钥后,我们需要把公钥上传到服务器上。运行以下命令:
gpg2 –keyserver hkp://pool.sks-keyservers.net –send-keys 34754DFE562C10E1A09907B7F4797C9A95E36DB6(刚才生成的公钥)
3 配置Maven
3.1 配置maven setting.xml
需要在本地的maven配置server 和 profile 两个地方,啰嗦的话就不多少了,直接上配置:
<server> <id>ossrh</id> <username>第一步注册的用户名</username> <password>第一步注册的密码</password> </server>
<profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.executable>gpg(MAC 和 Linux用户使用gpg2)</gpg.executable> <gpg.passphrash>生成密钥时输入的密码</gpg.passphrash> </properties>
3.2 配置项目的pom.xml
具体的配置可以查看小轮子里面的pom设置 https://github.com/weechang/JUtil/blob/master/pom.xml 首先需要添加指向sonatype仓库的<distributionManagement>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<name>Maven Central Staging Repository</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
继续配置pfofiles,添加各种推送、DOC、加密的插件
<profiles>
<profile>
<id>release
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
然后还可以添加一些开发者信息和license信息,具体的就不多说了。具体可以参考小轮子的配置
3.3 部署到中央仓库
运行以下代码进行deploy
mvn clean deploy -P release
如下图表示成功部署到中央仓库
因为我们在pom中添加了自动发布插件,所以可以不用管理,直接到中央仓库去查看就能看到你发布的项目了
PS:在部署过成功可能会遇到401的问题,具体请参考传送门 https://stackoverflow.com/questions/24830610/why-am-i-getting-a-401-unauthorized-error-in-maven