服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 上传自己的jar包到maven中央仓库的快速操作方法

上传自己的jar包到maven中央仓库的快速操作方法

2021-11-26 13:09Java鱼仔 Java教程

网络上可以搜索到很多jar包到中央仓库,但是都不是多适合自己的项目,于是自己动手写个,本文档通过sonatype上传jar包至maven中央仓库,Sonatype通过JIRA来管理OSSRH仓库,具体实例代码跟随小编一起看看吧

(一)概述

现在网络上已经有不少上传jar包至中央仓库的教程,但是我搜了一大圈之后发现当时的做法目前并不适用,因此决定自己写下上传jar包至中央仓库的方式,写这篇文章的时间是2021年8月18日。

 

(二)注册jira

本文档通过sonatype上传jar包至maven中央仓库,Sonatype通过JIRA来管理OSSRH仓库,因此首先注册jira账号

https://issues.sonatype.org/secure/Signup!default.jspa

上传自己的jar包到maven中央仓库的快速操作方法

 

(三)发布申请

jira创建完成后,我们需要提一个上传jar包的申请:

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

其中概要和描述可以自己随便写一点关于要上传项目的详情,groupId填写自己的域名,如果没有的话可以填io.github.[你的github账户名],另外两个必填项填写项目的git地址

上传自己的jar包到maven中央仓库的快速操作方法
上传自己的jar包到maven中央仓库的快速操作方法

创建完成之后,会有人对你的请求做处理,并在注释中给出意见,如果通过的话,这个问题的状态就会变成已解决

上传自己的jar包到maven中央仓库的快速操作方法

 

(四)发布项目

当请求通过后,处理人员会发过来处理成功的消息,同时会带上发布项目的教程地址:

https://central.sonatype.org/publish/publish-guide/#deployment

虽然这个教程中贴上了很详细的过程,但是因为全英文,而且还有点乱,因此我在这篇文章中发布一次

4.1 安装配置gpg

发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性,因此我们需要先创建GPG,下载GPG

https//www.gnupg.org/download/

安装过程就一路next就行,安装完成之后在命令行输入gpg --version,如果弹出具体的版本号就说明安装成功。

通过gpg --gen-key命令生成密钥,期间会输入用户名、邮箱和密码,记住自己的密码。

生成之后通过gpg --list-keys查看密钥,pub下的一连串字符就是公钥,将这串公钥发布到密钥服务器:

gpg --keyserver keyserver.ubuntu.com --send-keys 你的密钥

发送完成后提示发送成功

4.2 配置maven的setting.xml

setting.xml是maven的配置文件,放在本地,你可以通过idea的setting找到当前项目对应的setting.xml文件路径

上传自己的jar包到maven中央仓库的快速操作方法

部署ossrh身份认证信息:

<settings>
	<servers>
  		<server>
    			<id>ossrh</id>
    			<username>your-jira-id</username>
    			<password>your-jira-pwd</password>
  		</server>
	</servers>
</settings>

至此,setting.xml配置就结束了

4.3 配置pom文件

接下来配置项目的pom文件:

首先填写项目相关的信息,比如groupId,developers等等,这一块每个人都不同,这里就不做过多讲解,注意!groupId必须和你提交jira时填写的一样,不然怎么都传不上去。下面仅供参考:

<groupId>io.github.oliverliy</groupId>
<artifactId>fast-sso</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<name>fast-sso</name>
<url>https://github.com/OliverLiy/fast-sso</url>
<description>一个可快速接入的sso项目</description>
<licenses>
  <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
  </license>
</licenses>
<scm>
  <url>https://github.com/OliverLiy/fast-sso</url>
  <connection>https://github.com/OliverLiy/fast-sso.git</connection>
</scm>
<modules>
  <module>fast-sso-client</module>
  <module>fast-sso-server</module>
  <module>fast-sso-example</module>
</modules>
<developers>
  <developer>
      <name>javayz</name>
      <id>javayz</id>
      <email>974474148@qq.com</email>
      <roles>
          <role>Developer</role>
      </roles>
      <timezone>+8</timezone>
  </developer>
</developers>

<properties>
  <springboot.version>2.2.0.RELEASE</springboot.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
</properties>

配置distributionManagement,自 2021 年 2 月起,所有的新项目都配置在https://s01.oss.sonatype.org/上,因此下面的配置在一些2021年之前的博客中都是不一样的。

<distributionManagement>
<snapshotRepository>
  <id>ossrh</id>
  <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
  <id>ossrh</id>
  <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>

接着配置打包插件、 javadoc 和源 Maven 插件、Maven GPG 插件

<build>
      <plugins>
          <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-source-plugin</artifactId>
              <version>2.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>2.9.1</version>
              <configuration>
                  <!-- jdk1.8要加上,1.7要去掉,否则会报错 -->
                  <additionalJOptions>
                      <additionalJOption>-Xdoclint:none</additionalJOption>
                  </additionalJOptions>
              </configuration>
              <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>1.5</version>
              <executions>
                  <execution>
                      <id>sign-artifacts</id>
                      <phase>verify</phase>
                      <goals>
                          <goal>sign</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
</build>

最后提供一份完整的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>io.github.oliverliy</groupId>
  <artifactId>fast-sso</artifactId>
  <version>0.0.1</version>
  <packaging>pom</packaging>
  <name>fast-sso</name>
  <url>https://github.com/OliverLiy/fast-sso</url>
  <description>一个可快速接入的sso项目</description>
  <licenses>
      <license>
          <name>Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
          <distribution>repo</distribution>
          <comments>A business-friendly OSS license</comments>
      </license>
  </licenses>
  <scm>
      <url>https://github.com/OliverLiy/fast-sso</url>
      <connection>https://github.com/OliverLiy/fast-sso.git</connection>
  </scm>
  <modules>
      <module>fast-sso-client</module>
      <module>fast-sso-server</module>
      <module>fast-sso-example</module>
  </modules>
  <developers>
      <developer>
          <name>javayz</name>
          <id>javayz</id>
          <email>974474148@qq.com</email>
          <roles>
              <role>Developer</role>
          </roles>
          <timezone>+8</timezone>
      </developer>
  </developers>

  <properties>
      <springboot.version>2.2.0.RELEASE</springboot.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
  </properties>
  <profiles>
      <profile>
          <id>default</id>
          <activation>
              <activeByDefault>true</activeByDefault>
          </activation>
          <distributionManagement>
              <snapshotRepository>
                  <id>ossrh</id>
                  <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
              </snapshotRepository>
              <repository>
                  <id>ossrh</id>
                  <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
              </repository>
          </distributionManagement>
          <build>
                  <plugins>
                      <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-source-plugin</artifactId>
                          <version>2.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>2.9.1</version>
                          <configuration>
                              <!-- jdk1.8要加上,1.7要去掉,否则会报错 -->
                              <additionalJOptions>
                                  <additionalJOption>-Xdoclint:none</additionalJOption>
                              </additionalJOptions>
                          </configuration>
                          <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>1.5</version>
                          <executions>
                              <execution>
                                  <id>sign-artifacts</id>
                                  <phase>verify</phase>
                                  <goals>
                                      <goal>sign</goal>
                                  </goals>
                              </execution>
                          </executions>
                      </plugin>
                  </plugins>
          </build>
      </profile>
  </profiles>
</project>

4.4 打包上传

最后一步就比较简单了,在当前目录下执行deploy命令

mvn clean deploy

稍等片刻,提示build success后即表示打包成功

 

(五)发布

上面执行完成之后,登陆nexus:https://s01.oss.sonatype.org/#stagingRepositories,登上jira账号之后就能看到我们刚刚发布的内容

上传自己的jar包到maven中央仓库的快速操作方法

选中后点击上方的Close,他会检测你的jar包是否存在问题,如果存在问题,点击下方的Activity即可查看具体的问题,主要影响release的问题大部分都是打包时漏了一些东西,照着问题修复即可。

检测完成后上方的release就会变成可点击的状态,点击release后,你会收到一份邮件

上传自己的jar包到maven中央仓库的快速操作方法

邮件的意思是大概30分钟可以同步到maven仓库,大概4个小时可以在search.maven.org中搜到。现在我已经能在中央仓库看到自己的jar包了。你的jar包就能被别人使用了。

上传自己的jar包到maven中央仓库的快速操作方法

 

(六)总结

为什么要捣鼓这个东西呢?因为最近正在写一个有关统一认证的开源项目,需要上传jar包至中央仓库。这个开源项目的目的是为了能让项目通过简单的一些配置就可以快速接入统一认证系统,因此我给这个项目取名fast-sso,之后会发一个初始版本出来。我是鱼仔,我们下期再见!

到此这篇关于上传自己的jar包到maven中央仓库的快速操作方法的文章就介绍到这了,更多相关jar包上传maven中央仓库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_41973594/article/details/119791466
 

延伸 · 阅读

精彩推荐
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16