likes
comments
collection
share

手把手教你发布自己的maven依赖到中央仓库(图文教程)

作者站长头像
站长
· 阅读数 16

前言

最近心血来潮,做了自己的小工具包,想着能否放到公有仓库上,以便能在别的项目引入。于是来整合一下我实验成功的步骤,用于读者参考。

sonatype配置

首先需要注册一个sonatype的账号,用于后续我们发布,官方地址:central.sonatype.com/

手把手教你发布自己的maven依赖到中央仓库(图文教程)

点击signin后,有账号可以直接登陆,没有则点击signUp按条件注册一个。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

登录后点击右上角Public,进入Namespace配置页面

手把手教你发布自己的maven依赖到中央仓库(图文教程)

进入Public Settings的页面后,在网页右上角点击新增命名空间 add NameSpace,我这里已经创建好了一个Namespace。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

这里需要验证你的Namespace,有两个选择,一是直接输入你拥有的域名,验证时配置DNS解析(在根目录下放入特定的.txt文件);二是使用你的github用户名作为Namespace,规则如下:io.github.[你的用户名]

手把手教你发布自己的maven依赖到中央仓库(图文教程)

我这里选择的是使用github信息,输入信息后点击Verify Namespace会提示在github里创建特定名称的仓库作为验证标识。这里还没经过验证的状态会显示Unverified,如果在你的github创建好了指定的仓库,状态会自动显示pending,标识正在验证。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

按照要求创建名称为[tnyjzqdncw]仓库后,会自动进行验证。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

创建完仓库后验证通过标识如下图所显示为Verified,至此,有关sonatype的配置就暂告一段落。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

下载gpg并生成密钥

下载地址:https//www.gnupg.org/download/ ,选用适合你的操作系统的文件格式即可。

下载后,按以下步骤在使用命令行进行操作,在你本机中生成密钥后即可

生成密钥过程中会gpg提醒需要生成passphrase,要记住passphrase,后续配置会使用上。

# 检查版本
gpg -version
# 生成密钥,会提醒你输入name和email,按提示输入两个属性值后,输入O结束。
gpg --gen-key
# 查看密钥
gpg --list-keys
# 发布公钥
gpg --keyserver keyserver.ubuntu.com --send-keys 刚刚生成的公钥

项目POM文件配置

在你需要打包发布的项目POM文件中加入以下内容(替换中文内容)

<!--    name属性可以自定义名称也可以按这样写通配符-->
<name>${project.groupId}:${project.artifactId}</name>
<description>你的项目描述</description>
<url>你的项目地址(我填的github主页)</url>

<!-- license许可证信息,如果没有要求可以不改 -->
<licenses>
    <license>
        <name>The Apache License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
</licenses>

<!-- 开发者信息-->
<developers>
    <developer>
        <name>开发者名称</name>
        <email>开发者email</email>
        <organization>组织名称</organization>
        <organizationUrl>组织地址</organizationUrl>
    </developer>
</developers>
<!-- scm -->
<scm>
    <connection>scm:你的github https链接</connection>
    <developerConnection>scm:你的github git链接</developerConnection>
    <url>你的github项目地址</url>
</scm>

<!-- 需要的插件 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <version>0.4.0</version>
            <extensions>true</extensions>
            <configuration>
                <publishingServerId>central</publishingServerId>
                <!-- 这里设置tokenAuth,后续需要在sonatype中生成User token-->
                <tokenAuth>true</tokenAuth>
                <!-- 设置自动发布-->
                <!-- <autoPublish>true</autoPublish> -->
            </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>
                <!--跳过javadoc语法不规范报错 -->
                <additionalparam>-Xdoclint:none</additionalparam>
                 <!--指定java执行路径,我本机的path使用jdk8,实际我项目使用jdk17,所以指定路径执行 --
                <javadocExecutable>替换成你的javadoc path地址或${JavaHome}\bin\javadoc</javadocExecutable>
            </configuration>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <!--gpg 签名插件,后面需要配置-->
            <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>

maven settings文件配置

接下来,需要在我们要在执行的maven的settings.xml中添加一些元素。

首先,我们需要设置User Token,在sonatype主页上点击右上角进入账号信息页面。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

点击Generate User Token,点OK确认生成。

手把手教你发布自己的maven依赖到中央仓库(图文教程)

得到类似如下格式的内容

<server>
	<id>${server}</id> 
	<username>your-user-name</username>
	<password>your-password-here</password>
</server>

生成并保存Token内容后,现在会用上之前GPG的passphrase。

在settings.xml文件加入以下内容

<!-- 加入上文生成的sonatype的User Token内容-->
<servers>
    <server>
    <id>central</id> <!--我这里将#{server}显式替换成central -->
    <username>your-user-name</username>
    <password>your-password-here</password>
    </server>
</servers>
    
    <!-- 设置GPG执行路径,passphrase-->
<properties>
    <gpg.executable>your-gpg-path\bin\gpg</gpg.executable>
    <gpg.passphrase>your-passpahrase</gpg.passphrase>
</properties>

maven打包发布

回到项目中执行命令,或是依次执行idea项目中maven的lifecycle的clean和deploy。

mvn clean deploy

手把手教你发布自己的maven依赖到中央仓库(图文教程)

如果你的子模块不需要发布,可以在项目根pom.xml中的modules注释掉对应模块,或者在子模块的pom.xml中加入

<properties>
    <maven.deploy.skip>true</maven.deploy.skip>
</properties>

在maven执行deploy成功后,回到sonatype的publish里的Deployments可以查看到验证成功可用于发布的包内容,在VAILDATED状态包的发布信息中点击Publish后,项目会自动发到中央仓库里并且状态对应改成PUBLISHED

手把手教你发布自己的maven依赖到中央仓库(图文教程)

大概过个半小时左右,你就能在仓库中搜索到你上传的包内容了,并且也能中maven中央仓库中找到对应内容 仓库地址:repo1.maven.org/maven2/。

手把手教你发布自己的maven依赖到中央仓库(图文教程)
转载自:https://juejin.cn/post/7369783680426016778
评论
请登录