参考博客:将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺,相对进行补充
访问管理页面
新注册账号,或者使用github快捷登录,建议使用github快捷登录
添加命名空间
注意,如果使用github快捷登录,默认携带 io.github.?? 的命名空间,如果自己的代码在github上,可以直接使用这个命名空间
如果代码在 码云 仓库,
提交后,提示需要验证空间,需要按照要求,到 码云 仓库创建一个对应名称的空内容的项目,然后点击认证。
如上图, io.gitee.wsitm 是我的命名空间
添加其他命名空间见 Register a Namespace - The Central Repository Documentation
创建代码仓库
注意:代码一定需要符合开源,可以使用MIT开源,或其他开源。创建开源极为容易,gitee默认会提示创建开源,有快捷入口,点击快速创建。
代码的pom.xml的配置
具体如下:
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.gitee.wsitm</groupId>
<artifactId>wsitm-clutter</artifactId>
<version>0.0.1</version>
<url>https://gitee.com/wsitm/wsitm-clutter.git</url>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>wsitm-clutter杂烩工具</description>
<dependencies>
</dependencies>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<comments>The project itself is licensed under MIT License.</comments>
</license>
</licenses>
<developers>
<developer>
<name>yourname</name>
<email>youremail@qq.com</email>
</developer>
</developers>
<scm>
<connection>scm:git@gitee.com:wsitm/wsitm-clutter.git</connection>
<developerConnection>scm:git@gitee.com:wsitm/wsitm-clutter.git</developerConnection>
<url>https://gitee.com/wsitm/wsitm-clutter.git</url>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.0</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>
<aggregate>true</aggregate>
<charset>UTF-8</charset>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<additionalparam>-Xdoclint:none</additionalparam>
</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>3.1.0</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!--maven插件-->
<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>true</tokenAuth>
</configuration>
</plugin>
</plugins>
</build>
</project>
生成GPG密钥
作用:这是用于给自身源码加签名
下载GPG管理软件:https://gnupg.org/download/index.html
点击进入下载页面
如上图,当然,如果有钱也可以捐献一些。我不一样,我白嫖
安装完成之后,使用命令生成密钥,命令: gpg --gen-key
生成之后
推送密钥到远程服务端
命令: gpg --keyserver hkp://keyserver.ubuntu.com --send-keys [生成密钥后的标识]
例子:gpg --keyserver hkp://keyserver.ubuntu.com --send-keys 2*************F6449
服务:--keyserver 有三个官方网址可以切换
注意:可能推送不成功,三个网址我都测试不成功,不知道什么原因,只能使用另一种方法
公钥如下:
复制全部内容,手动上传,打开服务网址: https://keyserver.ubuntu.com/#
生成token
得到的token格式如下:
maven的setting.xml的配置
具体如下:
XML
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>central</id>
<username>${tokenId}</username>
<password>${tokenPass}</password>
</server>
</servers>
<profiles>
<profile>
<id>gpg</id>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.keyname>youremail@qq.com</gpg.keyname>
<gpg.passphrase>${pgp-password}</gpg.passphrase>
<gpg.useagent>true</gpg.useagent>
</properties>
</profile>
</profiles>
</settings>
发布到仓库
进入代码目录,执行命令: mvn clean deploy
发布完成,打开管理页面
提交后需要验证,如果正常
如果异常,查看错误描述
去仓库查看自己的项目
阿里云: 仓库服务
官方页面:https://mvnrepository.com/
注:阿里云,和官方能在审核后1小时内能查到自己的项目,但是官方页面需要好多天才能查询。但直接在maven中引用即可,并不影响使用