发布jar包到maven中央仓库

这篇具有很好参考价值的文章主要介绍了发布jar包到maven中央仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 环境

在网上找的很多文章中写得都有很多问题,这里记录一下最近一次成功地发布jar包到maven中央仓库的过程。并附带上每一个步骤官方的指导链接。

  • 系统:mac(windows系统在下载辅助工具时不太一样,在配置上和mac系统没有区别)
  • IDE:IntelliJ IDEA
  • JDK:1.8
  • maven:3.8.1(IDEA自带的版本)
  • 代码:上传到github上(使用gitee也行)
  • 发布形式:以jar包发布release版本(非SNAPSHOT版本)

2. 项目配置

官方对发布的项目做了一些必需的要求,如果不按要求来,发布可能会报错。

2.1. javadoc和source

以非pom方式打包的项目(pom.xml配置文件中可以通过

标签配置打包方式,默认就是jar),在打包完成后,target目录下必须要包含***-sources.jar***-javadoc.jar。如下图:
发布jar包到maven中央仓库
为了达成以上效果,需要在pom.xml中依赖两个插件:

<build>
    <plugins>
        <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>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

参考:https://central.sonatype.org/publish/requirements/#supply-javadoc-and-sources

2.2. 使用 GPG/PGP 签署文件

打包完成后,target目录下必须要包含***.jar.sac。如下图:
发布jar包到maven中央仓库
为了达成以上效果,需要在pom.xml中依赖插件(加完插件不要急着构建,还要下载GPG生成密钥,后面会说):

<build>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                    <goal>sign</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</build>

参考:https://central.sonatype.org/publish/requirements/#sign-files-with-gpgpgp

2.3. 项目名称和版本配置

  • groupId:使用正确的反向域名。如果有私人域名,可以配置成私人域名(后面配置起来比较麻烦)。如果没有私人域名,可以直接使用github的域名:io.github.{account}(gitee同理,推荐使用这种方式, account是github注册的登录账号)。
  • artifactId:项目名称,可以随意发挥。
  • version:版本,可以使用1.1.1这种格式,不推荐带-SNAPSHOT,快照版本不会直接发布到中央仓库。
发布jar包到maven中央仓库

参考:https://central.sonatype.org/publish/requirements/#correct-coordinates

2.4. 项目名称、描述和 URL

这个是为了增加可读性。

  • name:推荐使用这种格式:<name>${project.groupId}:${project.artifactId}</name>,当然也可以自定义。
  • description:项目描述,自己发挥。
  • url:项目地址,直接使用github(或gitee)上项目的地址即可。
发布jar包到maven中央仓库

参考:https://central.sonatype.org/publish/requirements/#project-name-description-and-url

2.5. 许可证书

可以使用Apache/MIT的许可证书,直接拷贝下面的即可:

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

参考:https://central.sonatype.org/publish/requirements/#license-information

2.6. 开发人员信息

留你自己的艺名和邮箱:

<developers>
        <developer>
        <name>你的艺名</name>
        <email>你的邮箱</email>
    </developer>
</developers>

参考:https://central.sonatype.org/publish/requirements/#developer-information

2.7. SCM 源码管理系统信息

可以使用github(或gitee)的项目地址。

<scm>
    <connection>scm:git:git://github.com:maidoubaobao/easy-tool.git</connection>
    <developerConnection>scm:git:ssh://github.com:maidoubaobao/easy-tool.git</developerConnection>
    <url>https://github.com/maidoubaobao/easy-tool/tree/master</url>
</scm>

参考:https://central.sonatype.org/publish/requirements/#scm-information

2.8. 文件签名校验(非必需)

官网说必需要包含.md5.sha1签名校验文件,但我没有特地去配置这个,也是可以发布的。可以跳过这一步。

参考:https://central.sonatype.org/publish/requirements/#provide-files-checksums

3. 在 JIRA 上提发布申请

3.1. 注册 JIRA

点击如下链接注册账号并登录,如果有账号直接登录即可:
https://issues.sonatype.org/secure/Signup!default.jspa

参考:https://central.sonatype.org/publish/publish-guide/#initial-setup

3.2. 创建项目

点击新建,按照下面的图示来填写:
发布jar包到maven中央仓库
发布jar包到maven中央仓库

  • groupId:要和项目里对应上,必须是一个可用的域名的反转字符串,如果项目是放在github上,必须使用io.github.{account}的格式,否则会审核不通过(注意:不能使用com.github)。
  • Project URL/SCM url:直接使用github的项目地址即可。

3.3. 查看刚刚创建的项目

正常情况下创建好默认就会进入刚刚创建的项目,如果进不去,可以按照路径项目-查看所有项目-类别-Central即可看到项目链接,点进去后,切换筛选器我的报告就能看到创建的项目了。
发布jar包到maven中央仓库
发布jar包到maven中央仓库

3.4. 在github中创建一个空项目

创建好的项目,会分配一个唯一标识OSSRH-***(见上图),需要用这个标识去github上创建一个空项目,这个是为了向核审管理员证明需要发布的github项目确实是你自己的项目。
发布jar包到maven中央仓库

3.5. 等待管理员审核

管理员都在国外,因为时差,一般隔天才会核审通过。没办法,耐心等着吧。
审核通过后,会发邮件(邮箱就是注册JIRA的那个),也会在JIRA项目下出现活动日志。
发布jar包到maven中央仓库

4. 获取 GPG 密钥

在等待JIRA项目审核的同时,可以并行把GPG密钥搞定。
注意:mac系统和windows系统在获取GPG密钥时有些区别,mac全程都是通过命令行搞定的,而windows提供了操作界面,可能会方便一点。这里只介绍mac系统的配置方式,windows系统可以自行搜配置教程。

4.1. 安装 GnuPG

  • 用下面的链接下载 GnuPG,选择系统对应的版本。

https://gnupg.org/download/index.html#sec-1-2
发布jar包到maven中央仓库
发布jar包到maven中央仓库

  • 验证安装是否成功

使用gpg --version命令来验证,如果输出了版本则说明安装成功。
发布jar包到maven中央仓库

参考:https://central.sonatype.org/publish/requirements/gpg/#installing-gnupg

4.2. 生成密钥对

使用命令gpg --full-generate-key生成密钥对,2年内有效。执行命令后,需要输入姓名和邮箱(建议和注册JIRA时用的一致),然后输入o(注意是字母o)确认生成。随后会提示输入一个passphrase口令来保护你的密钥对,这个口令要记住,后面配置需要使用。
注意:这个命令不建议执行多次,不然生成了多个密钥对,发布时还要去配置使用哪个密钥对,比较麻烦。
发布jar包到maven中央仓库

参考:https://central.sonatype.org/publish/requirements/gpg/#generating-a-key-pair

4.3. 发布公钥

  • 使用命令gpg --keyserver pgp.mit.edu --send-keys 公钥来发布。

官网提供了3个地址,有的地址可能不能用,上面这个地址亲测有效。(所以官方也不一定靠谱)

发布jar包到maven中央仓库
  • 使用命令gpg --keyserver pgp.mit.edu --recv-keys 公钥验证是否发布成功。

注意:验证的命令要等一会执行才能响应数据,估计发布可能有点延时,可以多执行几次。反正如果响应如图所示,就代表发布成功了。
发布jar包到maven中央仓库

参考:https://central.sonatype.org/publish/requirements/gpg/#distributing-your-public-key

5. JIRA 项目核审通过后的配置

5.1. 仓库地址

核审通过后,在JIRA上的项目里可以看到日志,这代表项目已经拥有发布权限了。下图标记出来的就是仓库地址。
发布jar包到maven中央仓库

5.2. 修改 maven 配置

这里修改的是mavensetting.xml配置文件,如果不知道配置文件在哪里(那么你不是一个合格的程序猿),可以在IntelliJ IDEAsettings > Build,Execution,Deployment > Builds Tools > Maven页面找到User settings file

  • 配置JIRA账户用于发布
    这里的<server>-<id>是有用的,一会要在项目的pom文件配置中要对应上。
<servers>
    <server>
        <id>ossrh</id>
        <username>JIRA用户名</username>
        <password>JIRA登录密码</password>
    </server>
</servers>
  • 配置GPG用于文件签署校验
    前文2.2小节已经在项目中配置了GPG插件了,这里要配置GPG的口令才能进行正常的签署。
    前文4.2小节生成GPG密钥对的时候,输入过一个口令passphrase,就用那个。
<profiles>
    <profile>
        <id>ossrh</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <gpg.executable>gpg2</gpg.executable>
            <gpg.passphrase>GPG口令</gpg.passphrase>
        </properties>
    </profile>
</profiles>

5.3. 配置仓库地址和插件

这里是在项目的pom文件中配置。

  • 配置发布的仓库地址
    这里的仓库域名,可以从JIRA项目的日志里看到,核审通过后会给你一个地址,就用那个做为域名。按照下面的格式来配:
<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>
  • 配置仓库插件
    这里的serverId要和前面maven配置文件setting.xml中配置的<server>-<id>保持一致。nexusUrl就是仓库地址,和上面配置的一样。
<build>
    <plugins>
        <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.13</version>
            <extensions>true</extensions>
            <configuration>
                <serverId>ossrh</serverId>
                <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                <autoReleaseAfterClose>true</autoReleaseAfterClose>
            </configuration>
        </plugin>
    </plugins>
</build>

6. 发布

JIRA 核审通过后,就可以发布了

6.1. 发布到中央仓库

  • 可以直接在IntelliJ IDEA中点击deploy来发布:
发布jar包到maven中央仓库
  • 输出如下结果说明发布成功了:
发布jar包到maven中央仓库

6.2. 验证发布结果

发布成功以后,并不能立刻在maven中央仓库中搜索到,大概隔一天以后才能搜索得到,所以不要心急,耐心等待。

  • JIRA 上的回应

执行完发布动作以后,大概隔了几分钟以后,JIRA项目下会多出一条日志:
发布jar包到maven中央仓库
这条日志给出了两个地址和两个时间,反正差不多要等个那么长的时间才能搜得到。我已经发布到中央仓库里了,第一个地址里还是找不到,但是第二个地址里能搜到:
发布jar包到maven中央仓库
下面这个地址好像是执行完发布操作后,过一会就能搜得到,可以试试:
https://s01.oss.sonatype.org/content/groups/public/

  • 在中央仓库里搜索

一般是隔天,才能在中央仓库里搜得到,在阿里云的仓库里也可以搜得到,阿里云本来就是从中央仓库同步的。

建议使用groupId来搜,一搜一个准。用artifactId来搜在第一页可能找不到,因为maven会对搜索结果做排序。
发布jar包到maven中央仓库

7. 彩蛋

  • JAVA_HOME 报错

如果遇到这样的报错The environment variable JAVA_HOME is not correctly set,不要慌,一般是因为你本地环境变量没有设置JAVA_HOME或者设置成了jre的目录。如果是因为前者可以去设置一下JAVA_HOME,如果是因为后者,可以把JAVA_HOME的目录改成jdk/bin的目录,或者可以改一下项目的pom配置文件:文章来源地址https://www.toymoban.com/news/detail-750703.html

<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>
            <configuration>
                <!-- 这里需要指定jdk的bin目录下的javadoc执行文件 -->
                <javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
            </configuration>
        </execution>
    </executions>
</plugin>

到了这里,关于发布jar包到maven中央仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven导入sqlserver驱动jar包依赖包到本地仓库并引用

    一、配置maven环境变量 (1)、找到此电脑右键----点击属性----选择高级系统设置----点击环境变量----新建系统变量 (2)、新建系统变量:MAVEN_HOME,变量值填你maven解压的路径,然后点击确定。 (3)、在已有的path系统变量里,点击编辑,在变量值的最后填写%MAVEN_HOME%bin。 (4)、验证是

    2023年04月08日
    浏览(50)
  • 【拥抱开源】发布自己的项目到maven中央仓库

    官网注册账号地址 username不能是中文,不让后面会出问题 一定要选如图的选项 图4.1 概要 :填你的项目名 groupid :如果gitee上的项目就填 io.gitee+下图所示antopen ,如果是公司(有域名和公司邮箱),就填 com.公司名称 project url :项目地址 SCM url :项目克隆地址(后面以.git结

    2024年02月03日
    浏览(51)
  • 一篇搞定发布自己的类库到Maven中央仓库

    在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。 此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地? 本文将通过一步步的操作

    2024年02月05日
    浏览(38)
  • 向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录

    1、注册https://issues.sonatype.org/账号 下面就代表注册好了,同时提交的工单也通过了  2、这里主要是goupId 需要进行认证,需要到域名注册商近一个txt的解析,以便确保这个是你的 通过下面来验证你的域名信息,这里主要是上面的工单号码要包括进去,我这里是一个链接地址作

    2024年02月14日
    浏览(42)
  • IDEA上传jar包到Maven

     mvn install:install-file  \\\"-Dfile=core-3.5.0.jar\\\"   \\\"-DgroupId=com.thunisoft.zxing\\\"   \\\"-DartifactId=javase\\\"  \\\"-Dversion=3.5.0\\\"    \\\"-Dpackaging=jar\\\"   \\\"-DgeneratePom=false\\\"  

    2024年02月04日
    浏览(41)
  • 【Java 中级】Maven 本地仓库、中央仓库、私仓

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 初阶 🙉八股文专题:剑指大厂,手撕

    2024年02月05日
    浏览(46)
  • Java Maven项目推送到 Maven 中央仓库

    当需要在 sonatype 认证 com.xxx 命名空间时,需要将 @.xxx.com 配置域名解析。 记录类型:TXT 文本内容:验证的 key。 GPG 下载地址:https://www.gnupg.org/download/index.html Mac 可以使用 brew install gpg 直接安装 使用方式可参考: https://central.sonatype.org/publish/requirements/gpg/ https://www.jianshu.com/

    2024年04月13日
    浏览(31)
  • 个人开源项目如何上传maven中央仓库

    最近在写一些开源项目,想把自己写的东西放到maven中央仓库,提供给更多的人使用。所以写这一篇文章,记录一下自研开源项目jar包上传同步maven中央仓库成功的整个过程,这其中还是有不少的坑的。 一、OSSRH账号注册于配置 1.1.账号注册 1.2.域名认证 二、安装GnuPG软件,并

    2023年04月09日
    浏览(33)
  • maven中央仓库不能访问的解决办法

    导入Maven项目,编译时候出错,好象是接不上apache.org/maven2,下载不了maven-resources-plugin-2.6.jar 这个jar包 出错内容: Plain Text code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [INFO]?Scanning?for?projects... [INFO] [INFO]?------------------------------------------------------------------------ [INFO]?Building?maven

    2024年02月13日
    浏览(37)
  • k8s系列-kuboard创建工作负载 docker上传java微服务jar包到仓库的过程

    1.查看环境中是否存在docker环境 docker version 2.不存在的话需要创建docker 1.环境说明 1.开发人员将java微服务打包成在linux中可运行的jar包,将其传送给运维人员 2.外网和内网可以传送文件 3.内网需要有linux服务器,并且配置了docker环境和命名空间 这里过程是基于k8s的集群kuoard控

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包