如何上传自己的jar包到maven中央仓库(2021最新版)
Posted Java鱼仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何上传自己的jar包到maven中央仓库(2021最新版)相关的知识,希望对你有一定的参考价值。
本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看
(一)概述
现在网络上已经有不少上传jar包至中央仓库的教程,但是我搜了一大圈之后发现当时的做法目前并不适用,因此决定自己写下上传jar包至中央仓库的方式,写这篇文章的时间是2021年8月18日。
(二)注册jira
本文档通过sonatype上传jar包至maven中央仓库,Sonatype通过JIRA来管理OSSRH仓库,因此首先注册jira账号
https://issues.sonatype.org/secure/Signup!default.jspa
(三)发布申请
jira创建完成后,我们需要提一个上传jar包的申请:
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
其中概要和描述可以自己随便写一点关于要上传项目的详情,groupId填写自己的域名,如果没有的话可以填io.github.[你的github账户名],另外两个必填项填写项目的git地址
创建完成之后,会有人对你的请求做处理,并在注释中给出意见,如果通过的话,这个问题的状态就会变成已解决
(四)发布项目
当请求通过后,处理人员会发过来处理成功的消息,同时会带上发布项目的教程地址:
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文件路径
部署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>
以上是关于如何上传自己的jar包到maven中央仓库(2021最新版)的主要内容,如果未能解决你的问题,请参考以下文章