为什么要把我们的项目打包发布到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

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_maven 仓库定期同步中央仓库依赖


然后登录,开通开通OSSRH服务

点击顶部导航栏的“新建”按钮,然后在弹出的模态框中填写信息,如下:

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_maven 仓库定期同步中央仓库依赖_02


maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_xml_03


然后sonatype会对你提交的申请进行审核,一般会在2个工作日内完成。在审核期间你会收到各种流程的邮件或者查看页面的“活动日志,你可以看到具体的流程(如下图),按照它的说明进行操作即可。

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_xml_04

审核通过后状态被标记为“已解决”,这说明你可以往OSSRH上不是maven jar包了。

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_maven 仓库定期同步中央仓库依赖_05

配置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

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_maven_06


按照提示一步步来就行。查看生成的key

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_xml_07


将key发布到keyserver

将key发布到keyserver这样别人就可以对文件进行校验了(防止文件别篡改)。

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_jar_08

打包并发布到OSSRH

在项目的根目录执行:

mvn clean deploy

如果你项目的版本是x.x.x-SNAPSHOT,项目打包的jar将被发布到OSSRH的snapshots仓库,否则发布到release仓库下。会看到上传数据的日志如下:

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_jar_09

在OSSRH中查看发布的项目

OSSRH地址:https://s01.oss.sonatype.org/#welcome 首先使用你注册的用户登录。

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_maven 仓库定期同步中央仓库依赖_10


在一定的时间被,OSSRH自动同步到maven中央仓库。

你可以去https://search.maven.org/,去搜索。

maven 仓库定期同步中央仓库依赖 maven发布到中央仓库_jar_11