将JAR发布到Central Maven存储库

时间:2020-01-09 10:36:52  来源:igfitidea点击:

要将包含已编译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继续进行发布和发布过程。