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

目录
  • (一)概述
  • (二)注册jira
  • (三)发布申请
  • (四)发布项目
    • 4.1 安装配置gpg
    • 4.2 配置maven的setting.xml
    • 4.3 配置pom文件
    • 4.4 打包上传
  • (五)发布
  • (六)总结

(一)概述

现在网络上已经有不少上传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>
                                        <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账号之后就能看到我们刚刚发布的内容

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

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

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

(六)总结

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

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

(0)

相关推荐

  • 详解如何将JAR包发布到Maven中央仓库

    将jar包发布到Maven中央仓库(Maven Central Repository),这样所有的Java开发者都可以使用Maven直接导入依赖,例如fundebug-java: <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency> <groupId>com.fundebug</groupId> <artifactId>fundebu

  • Maven 生成打包可执行jar包的方法步骤

    最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下 1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖的第三方jar包分开 4.项目里的执行脚本也要一块打包并进行分类 5.document目录下的readme.txt放在压缩包的根目录下,其他的还放在这个目录下 6.打的jar包去掉不需要的目录(文

  • 手动添加jar包进Maven本地库内的方法

    正常maven依赖jar包的pom.xml写法如下: <!-- https://mvnrepository.com/artifact/ojdbc/ojdbc --> <!-- (参数一):下载到本地的ojdbc-10.2.0.4.0.jar包的真实存放路径 --> <dependency> <groupId>ojdbc</groupId>-----------------(参数二) <artifactId>ojdbc</arti

  • Maven生成及安装jar包到本地仓库的方法

    前言 本文将讲解如何通过Maven生成jar包并安装到本地仓库(包括将当前项目打包安装仓库到本地以及安装从外部获得的单独jar包),完成下面的操作需要安装Maven并了解一些基础的命令使用,想了解Maven的一些基础概念,可以查看我的这篇文章,此外本文就不自己从零构建一个Maven项目了,而是采用IDEA自带的模板来演示样例. 创建一个 Maven 项目 在正式讲解之前,我们先创建一个简单的Maven项目: 然后在src/main/java/目录下,创建一个util/Demo.java文件: 生

  • 使用maven工具解决jar包冲突或重复加载的问题

    在使用maven开发项目的过程中,经常会遇到jar包重复加载或者jar包冲突的问题的,但是由于有些jar是由于maven的依赖加载自动加载进来的, 而不是开发者自己配置的,特别是当项目中pom中配置的jar包依赖本身很多时,开发者靠自己的经验,有时很难找出是哪个jar的加载导致加载了 多余的依赖jar,从而产生冲突. 今天刚好遇到一个借用eclipse中的maven插件解决jar包依赖冲突的问题,分享一下. 项目中出现的问题如下: Caused by: java.lang.NoClassDefF

  • Maven中jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法. 一.Maven中jar包冲突产生原因 MAVEN项目运行中如果报如下错误: Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException 十有八九是Maven jar包冲突造成的.那

  • 如何把本地jar包导入maven并pom添加依赖

    开发过程中经常遇到需要用某些http://maven.apache.org/中没有的jar包,这个时候可以用maven命令自己添加 通常这些jar包可以从其官网下载下来,然后用maven明天添加此jar包到maven 本次用例:jodconverter-2.2.2.jar,apache-maven-3.5.0 1:将jar包下载到某位置,为了方便,下载到了D:\lgqProject\apache-maven-3.5.0\bin下 2:用maven命令安装 因为我没有建环境变量,所以直接在bin目

  • 解决eclipse中maven引用不到已经存在maven中jar包的问题

    之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放jar包的地方.但是,在eclipse中的maven仓库中 搜索不到本地仓库中的jar包. 原因是因为maven中的本地仓库的index索引没有更新,导致在eclipse的maven插件中搜索不到. 解决方案: 在eclipse中打开菜单 window-> show view –> other –> Maven -> maven repositories 打开之后

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

    目录 (一)概述 (二)注册jira (三)发布申请 (四)发布项目 4.1 安装配置gpg 4.2 配置maven的setting.xml 4.3 配置pom文件 4.4 打包上传 (五)发布 (六)总结 (一)概述 现在网络上已经有不少上传jar包至中央仓库的教程,但是我搜了一大圈之后发现当时的做法目前并不适用,因此决定自己写下上传jar包至中央仓库的方式,写这篇文章的时间是2021年8月18日. (二)注册jira 本文档通过sonatype上传jar包至maven中央仓库,Sonatyp

  • 如何把JAR发布到maven中央仓库的几种方法

    详细描述maven中央仓库发布jar包的中间过程, 以及遇到的一些问题汇总, 尽量用文字描述清楚, 耐心看下去, 就一定会发布成功 ----Sonatype篇---- 名词解释: Sonatype Nexus: Sonatype Nexus helps software development teams use open source so they can innovate faster and automatically control risk maven社区唯一指定的仓库地址为: ht

  • 手撸一个Spring Boot Starter并上传到Maven中央仓库

    目录 打包上传到中央仓库 第一步 在issues.sonatype.org注册一个账号 第二步 在issues.sonatype.org提交Issue 第三步 配置Maven Setting.xml 第四步 配置项目的pom.xml 第五步 安装和配置GPG 第六步 项目打包上传 第七步 处理验证 问题 我1.0.1版本发布错了,有办法修改或者删除吗? 先手撸一个Spring Boot Starter 准备搞个项目,包含以下几个功能后边还会加新功能. 配置项加密(已实现) 服务调用链 数据脱敏

  • SpringBoot项目部署到服务器上的方法(Jar包)

    1. 部署方式 Springboot 和普通web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢?  通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war.现在讲一下打包成 jar 部署. 2. 打包成 jar 第一种方法(idea) 1. clean 2. package 第二种方法(命令行): 键盘输入 windows + r : cd 命令切换到你项目所在路径: online 是我的项目名称,这里换成你自己的,可以看到当前是

  • 详解maven中央仓库连不上的解决办法

    方案一.使用国内的镜像阿里仓库等 首先通过maven的路径找到setting.xml的文件 然后在其中修改mirror和profile 保存一下就好了 方案二:https://maven.aliyun.com/mvn/search打开这个网站在里面下载你需要的jar包放到自己的本地仓库中 到此这篇关于详解maven中央仓库连不上的解决办法的文章就介绍到这了,更多相关maven中央仓库连不上内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • 使用CI/CD工具Github Action发布jar到Maven中央仓库的详细介绍

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一种能够支持流水线作业的发布工具,能让我在进行合并代码时自动触发构建发布.有一款免费的产品能做到这一点,它就是Github Action. Github Action Github Action是由Github创建的CI/CD服务. 它的目的是使所有软件开发工作流程的自动化变得容易. 直接从GitHub构建,测

  • 如何使用gradle将java项目推送至maven中央仓库

    目录 一.注册Sonatype账号申请创建项目 二.等待Sonatype申请批复 三.生成GPG 四.配置gradle 五.Sonatype将项目同步至Maven中央仓库 一.注册Sonatype账号申请创建项目 到链接:https://issues.sonatype.org/注册一个账号. 创建点击顶部导航栏的 create 创建项目 如上填写,注意的是group id我这里使用的是gitee的二级域名地址,这个域名必须是真实的,与project url中的一致.或者自己有一个域名按照提示的链

随机推荐