Maven发布自己项目到maven中央仓库

Posted Hi,all

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven发布自己项目到maven中央仓库相关的知识,希望对你有一定的参考价值。

目录

1. sonatype网站相关

1.1  注册sonatype网站账号

1.2  登录后,新建问题

 3. 配置maven--setting.xml

4. 配置maven--pom.xml

4.1 添加个人信息

4.2 添加开源版权信息

4.3 添加scm信息

4.4 添加插件

4.4 添加build

5. 下载GPG加密

5.1 安装Gpg4Win

5.2 创建密钥对

 5.3 验证版本

5.4 查看已生成的公私要信息

 5.5 发送公钥信息到ubuntu.com服务器

 5.6 查询是否发送成功

 5.7 发送公钥异常:gpg: keyserver send failed: Unknown error

6. 上传到maven中央仓库

6.1 命令行:

6.2 idea 执行

7 发布结果


1. sonatype网站相关

1.1  注册sonatype网站账号

Sign up for Jira - Sonatype JIRA

1.2  登录后,新建问题

 

 

新建后,等待工作人员评论

 

如果评论这样的话,在github上创建一个对应空项目。

 

这样就是认证通过了,可以上传项目到中央仓库。

 3. 配置maven--setting.xml

 在 <servers>标签下添加


	<server>
		<id>ossrh</id>
		<username>你sonatype账号</username>
		<password>sonatype 密码</password>
	</server>

4. 配置maven--pom.xml

4.1 添加个人信息

<name>object-comparator</name>
<description>Java object property value comparator</description>
<url>https://github.com/jinchunzhao/object-comparator</url>

<developers>
    <developer>
      <id>jinchunzhao</id>
      <name>jinchunzhao</name>
      <email>15136708953@163.com</email>
    </developer>
</developers>

4.2 添加开源版权信息

根据项目的开源协议

<licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

4.3 添加scm信息

<scm>
    <connection>https://github.com/jinchunzhao/object-comparator.git</connection>
    <url>https://github.com/jinchunzhao/object-comparator</url>
  </scm>

4.4 添加插件

distributionManagement 下面的id必须要和你 maven settings.xml里面的id配置的一模一样

<profiles>
    <profile>
      <id>release</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
              <show>private</show>
              <nohelp>true</nohelp>
              <charset>UTF-8</charset>
              <encoding>UTF-8</encoding>
              <docencoding>UTF-8</docencoding>
              <additionalparam>-Xdoclint:none</additionalparam>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
          <!--Release -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.1</version>
          </plugin>
          <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <executions>
              <execution>
                <id>default-deploy</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <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://s01.oss.sonatype.org/</nexusUrl>
              <autoReleaseAfterClose>true</autoReleaseAfterClose>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.8.1</version>
          </plugin>
        </plugins>
      </build>
      <!-- 这里配置的ossrh要与settings.xml的一致,不然发布会出错 -->
      <distributionManagement>
        <snapshotRepository>
          <id>ossrh</id>
          <name>Sonatype Nexus Snapshots</name>
          <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
          <id>ossrh</id>
          <name>Nexus Release Repository</name>
          <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
      </distributionManagement>
    </profile>
  </profiles>

4.4 添加build

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>8</source>
          <target>8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

5. 下载GPG加密

Gpg4win - Download Gpg4win

5.1 安装Gpg4Win

傻瓜式安装

5.2 创建密钥对

 5.3 验证版本

ggp --version

 

5.4 查看已生成的公私要信息

gpg --list-keys

 

 5.5 发送公钥信息到ubuntu.com服务器

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 刚刚生成的公钥 

 5.6 查询是否发送成功

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 刚刚发送的公钥 

 5.7 发送公钥异常:gpg: keyserver send failed: Unknown error

适用我的解决办法是:

执行下面两个命令

gpgconf --kill dirmngr

dirmngr --debug-all --daemon --standard-resolver

在另一个终端上运行推送公钥命令就可以了。

6. 上传到maven中央仓库

6.1 命令行:

mvn clean deploy -P release -Dmaven.test.skip=true
# 这里的 -P release与pom.xml中的标签一致
<profile>
    <id>release</id>
</profile>

6.2 idea 执行

执行成功

7 发布结果

表明已经发布成功了。

这样就可以到 Maven Central Repository Search 去查刚刚发布的项目,如果没有查到也关系,同步需要一段时间。

以上是关于Maven发布自己项目到maven中央仓库的主要内容,如果未能解决你的问题,请参考以下文章

如何发布Maven依赖到中央仓库

maven私服nexus的安装

maven 发布到中央仓库 gpg 证书

通过 GitHub Actions 自动发布项目到 Maven 中央仓库

通过 GitHub Actions 自动发布项目到 Maven 中央仓库

Maven仓库--Nexus的配置使用