将JAR发布到Central Maven存储库
要将包含已编译Java类的JAR文件发布到Maven中央存储库,我们需要执行以下步骤。本教程包含一个列表,该列表列出了将Java项目或者产品发布到中央Maven存储库所需采取的步骤,以及有关我们需要执行的操作的注释以及相关链接。
将JAR文件发布到中央Maven存储库后,使用Maven来管理其Java项目的依赖关系的任何人都可以使用该JAR文件。因此,中央Maven存储库是开源项目分发其代码的JAR文件的便捷方法。这也是共享其他类型的公共代码(如用于SaaS或者云平台的API)的便捷方式。该客户端可能不是开源的,但仍应易于用户免费使用。
发布到Central Maven存储库的步骤
要将JAR文件发布到中央Maven存储库,我们必须完成3组步骤。以下各节将解释这些步骤中的每一个。
创建一个Sonatype帐户并声明命名空间
在我们或者组织可以将任何内容发布到中央Maven存储库之前,我们需要执行以下步骤:
- 在Sonatype上创建帐户
- 声明产品的名称空间
这些步骤是我们需要完成的一次性设置过程。
创建和发布PGP密钥
必须使用PGP私钥对发布到中央Maven存储库的所有JAR文件进行数字签名。为此,我们必须创建自己的PGP私钥/公钥对,并将公钥发布到公钥服务器。我们必须保留自己的私钥。我们需要用它来签署要发布到中央Maven存储库的所有JAR文件。用户通过从中央Maven存储库下载JAR文件来使用公用密钥来验证签名。创建PGP密钥对并发布它需要执行以下步骤:
- 创建一个PGP私钥/公钥对来签署JAR文件
- 将密钥发布到公共密钥服务器
PGP私钥最终将过期。我们不需要"扩展"私钥。我们可以只创建一个新的,然后在旧的过期时将其发布到公钥服务器。然后,使用此新密钥对对新版本进行签名。
我们可以从Sonatype生产者页面上找到有关创建和发布公钥/专用密钥对的更多信息:https://central.sonatype.org/pages/producers.html。要使其在Windows上运行可能会有些挑战,因为Windows PGP的输出与官方文档中显示的示例略有不同,并且其行为也有所不同。但是,请继续在网上搜索,最终我们将可以使用它。我知道我做到了
准备Project Maven POM文件
对于每个要发布其JAR文件到中央Maven存储库的Java项目,我们都需要完成以下POM文件配置步骤集:
- 使用项目坐标配置POM文件
- 使用项目名称配置POM文件
- 使用项目描述配置POM文件
- 使用项目URL配置POM文件
- 使用项目许可证配置POM文件
- 与项目开发人员一起配置POM文件
- 使用项目分发管理配置POM文件
项目POM插件的步骤:
- 为Nexus暂存插件配置POM文件
- 为源配置POM文件
- 为JavaDoc配置POM文件
- 配置用于签名的POM文件
有关完整的POM文件,请查看以下github存储库中的pom.xml:用于Java GitHub存储库的RION Ops
Maven settings.xml文件的步骤:
- 配置Sonatype帐户登录
- 配置用于签名JAR文件的PGP密钥
配置POM文件以进行分发管理
<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>
为Nexus Staging插件配置POM文件
<plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.7</version> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin>
为源配置POM文件
<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配置POM文件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
配置POM文件以签名JAR文件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin>
配置settings.xml
<settings> <localRepository>/maven-repo</localRepository> <servers> <server> <id>ossrh</id> <username>username</username> <password>password</password> </server> </servers> <profiles> <profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.executable>gpg2</gpg.executable> <gpg.passphrase>passphrase</gpg.passphrase> </properties> </profile> </profiles> </settings>
发布JAR文件
完成上述所有步骤后,就可以释放JAR文件了。我们可以通过以下Maven命令执行此操作:
mvn clean deploy
而已!在执行此命令期间,可能会要求我们输入PGP私钥的密码。至少,在Windows上运行此程序时会要求我这样做。然后,我只输入密码并按Enter键,Maven继续进行发布和发布过程。