<返回更多

Java项目发布到Maven中央仓库操作步骤及相关注意事项

2021-07-05  今日头条  疯狂架构师
加入收藏

1 注册maven(oss)账号

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

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

注册成功后登陆到首页

2 创建一个Issue

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

Project: 项目类型,一般为Community Support。

Issue Type: 问题类型, 新的项目为New Project。

Summary:项目名称,如HASentinel。

Description:项目描述,介绍一下当前项目。

Group Id:对应pom.xml里的group id。如果你有个人或企业的域名,可以为公司的域名,审核时候需要验证当前域名为本人所有,如com.eeeffff.hasentinel,其中com.eeeffff须为域名eeeffff.com的拥有者,如果没有可以写github对应的个人地址(如:com.github.potenstop)

Project URL: 项目的地址,如
https://github.com/fenglibin/HASentinel 。

SCM url:项目对应的下载地址,如
https://github.com/fenglibin/HASentinel .git。

其他保持默认。填写完成后就可以create了。

3 域名拥有者验证

项目创建成功后,会有一个项目编辑,如下所示:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

然后根据其要求,到域名提供商那里做一条TXT解析,这是最快的一种认证方式:

域名服务商增加该域名eeeffff.com的TXT解析:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

记录值即为为该项目对应的项目代码值。

4 pgp生产秘钥key

我的电脑是linux Ubuntu18,Ubuntu本身包含了gpg这个命令,因而不需要额外的下载,如果是其它系统,可能需要下载相应的软件或命令。

生成加密key,使用命令“gpg --gen-key”:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

查看生成的加密Key,使用命令“gpg --list-keys”:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

将加密Key推送加远程加密服务器,此处我推到Ubuntu的加密服务器:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

推送如果不报错,则说明推成功,如果推失败则多尝试几次,或者换一个远程加密服务器,加密服务器之间会相互同步数据。

查看推送的加密Key:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

这步一定要验证一下,以确保推送真的成功了,如果获取失败则多尝试几次,我这边第一次操作就显示失败了。

5 配置settings.xml

在maven对应的config目录下的settings.xml中的services节点下增加一个service节点,配置你当前sonatype的用户名和密码,用于后续jar包远程推送到maven做权限验证,这里的id要和pom.xml中distributionManagement配置的id要一一对应,如我配置的为

<server>
    <id>ossrh</id>
    <username>maven_username</username>
    <password>maven_password</password>
</server>

6 配置pom.xml

发布到maven仓库的项目,要求配置如下内容:

name: 项目名称。

description: 项目描述。

url: 项目地址

licenses: 开源协议。

developers: 开发者列表。

scm: 项目的git地址相关。

profiles: 配置不同的环境。比如开发环境 测试环境 发布环境。

groupId: 定义当前maven项目隶属的实际项目。

artifactId: 该元素定义实际项目中的一个Maven项目(模块).

version: 版本号, 带SNAPSHOT为快照版本,否则为 release 版本。

build: 插件。需要加上maven-source-plugin、maven-JAVAdoc-plugin、maven-gpg-plugin三个插件

dependencies: 依赖的模块。

pom.xml 配置参考如下截图及配置代码所示:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

        <!-- 配置必须的插件 -->
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
            </plugin>
 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven.deploy.version}</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>3.2.1</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>3.3.0</version>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<version>3.0.1</version>
				<executions>
					<execution>
						<id>sign-artifacts</id>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
        </plugins>
        <!-- 配置项目发布的maven仓库路径 -->
        <distributionManagement>
        <repository>
            <id>ossrh</id>
            <name>Release</name>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
 
        <snapshotRepository>
            <id>ossrh</id>
            <name>SNAPSHOTS</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

7 发布版本

都配置成功后,此时转到项目的根目录下,执行如下maven打包及发布命令:

mvn clean source:jar install deploy -Dmaven.test.skip

如果没有报错,则输出如下截图所示:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

此时可以在创建项目的sonatype页面给负责和你对接的人留言,让他执行下一步操作,他会告诉你下一步该做什么:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

8 在oss查看快照

发布快照版本,只需要在版本号后面加上SNAPSHOT字符串,重新打包即可,Maven会自动判断当前发布为快照版本,快照版本可以无限次发布,不需要在仓库中删除后再发布。

查看地址:
https://s01.oss.sonatype.org

可以根据GroupID搜索对应工程的快照的信息,查看快照是不需要登陆的,如下图所示。

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

9 发布和查看release版本

发布release版本只需要去掉版本号后面的的SNAPSHOT,重新执行deploy即可,但是请记住,此时deploy成功并不是真的发到了线上的Maven仓库,此时相当于发到了一个预发布仓库,此时需要用户去执行项目检查,包括javadoc生成是否符合规范、pom文件是否包含了scm地址等信息、是否通过gpg生成了校验asc文件等等,如果通不过会有相应的提示,完成这些修改后才能后关闭当前issue,执行真正的发布动作。

查看release版本需要登录才可以看到, 用户名和密码和注册maven一致。

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

执行项目检查的步骤:1)选中一个项目;2)执行上面的Close操作,然后项目会执行规范及安全检查,如果通过则release按钮会变得可用,如果检验没有通过,则会有相应的提示信息,需要根据提示修改,在执行下一次执行deploy之前,先通过Drop功能删除掉当前项目。

校验不通过大致信息如下所示:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

此处展示了三种类型的错误:

签名校验错误;

pom文件校验错误;

Javadoc校验错误。

10 正式同步到Maven中央库

如果是第一次发布,需要在release成功后在之前的issue添加评论,告知该项目预计release成功。如下图:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

待管理人员正式执行同步,等待一段时间,就可以在maven的正式仓库中执行到该项目了。

Maven仓库(https://search.maven.org/)中搜索项目:

Java项目发布到Maven中央仓库操作步骤及相关注意事项

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>