为什么要把我们的项目打包发布到maven中央仓库?
开源,为了将我们的项目(作为开源组件)开源出去,让全世界的开发者都可以使用maven将我们的组件引入到他们自己的项目中使用。
项目打包发布到maven中央仓库基本流程
项目打包发布到maven中央仓库需要经过以下步骤:项目编译-->打jar包-->生成javadoc并打成jar-->源码打成jar-->使用gpg生成各jar包的签名文件asc-->部署到OSSRH-->OSSRH自动将组件同步到maven 中央仓库
什么是OSSRH
官方网址:https://s01.oss.sonatype.org/ 它是由社区支持的开源项目托管服务(Open Source Project Repository Hosting,简称OSSRH),它免费,开发者可以将自己的开源项目生成的maven jar包托管到这里。
当将maven项目打包部署到这里之后,将自动同步到maven中央仓库。
下面开始具体介绍将项目打包发布到maven中央仓库的详细流程。
创建sonatype账号,并开通OSSRH服务
OSSRH属于sonatype,要将maven项目部署到OSSRH需要认证通过才可以,所以需要先去sonatype创建账号。
注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
然后登录,开通开通OSSRH服务
点击顶部导航栏的“新建”按钮,然后在弹出的模态框中填写信息,如下:
然后sonatype会对你提交的申请进行审核,一般会在2个工作日内完成。在审核期间你会收到各种流程的邮件或者查看页面的“活动日志,你可以看到具体的流程(如下图),按照它的说明进行操作即可。
审核通过后状态被标记为“已解决”,这说明你可以往OSSRH上不是maven jar包了。
配置maven
不是任何人都能将maven项目发布到OSSRH,只有认证的用户才可以,所以你要告诉maven部署时关于托管服务的用户名和密码,当你去发布是它会去认证。
找到maven的setting.xml,做如下配置:
<servers>
<server>
<id>ossrh</id>
<username>你在sonatype上注册的username</username>
<password>你在sonatype上注册的password</password>
</server>
</servers>
配置项目
为了我们的发布的完整性,一般都会包括项目编译后的jar,源码jar和各文件的签名文件,所以需要在项目的pom.xml中引入一些插件:
<build>
<plugins>
<!--生成源码插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!--javadoc生成插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- jar等文件签名插件,用于生成asc签名文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
还需要配置发布的地址:
<distributionManagement>
<repository>
<id>ossrh</id> <!-- 这里的id要与maven setting.xml中server的id一致 -->
<name>oss nexus repository hosting</name>
<url>https://s01.oss.sonatype.org/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>ossrh</id> <!-- 这里的id要与maven setting.xml中server的id一致 -->
<name>oss nexus repository hosting</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
snapshotRepository
指定快照版的发布地址,repository
指定releases版的发布地址。
安装GnuPG软件,并生成签名
发布到OSSRH的各种文件需要使用gpg软件进行签名,所以需要安装GPG软件生成签名。
下载地址:https://www.gnupg.org/download/index.html生成签名
执行gpg --key-gen
按照提示一步步来就行。查看生成的key
将key发布到keyserver
将key发布到keyserver这样别人就可以对文件进行校验了(防止文件别篡改)。
打包并发布到OSSRH
在项目的根目录执行:
mvn clean deploy
如果你项目的版本是x.x.x-SNAPSHOT,项目打包的jar将被发布到OSSRH的snapshots仓库,否则发布到release仓库下。会看到上传数据的日志如下:
在OSSRH中查看发布的项目
OSSRH地址:https://s01.oss.sonatype.org/#welcome 首先使用你注册的用户登录。
在一定的时间被,OSSRH自动同步到maven中央仓库。
你可以去https://search.maven.org/,去搜索。