前言
之前要将jar包上传到maven中央仓库,就是基于ossrh的插件,由于OSSRH于2025年6.30服务结束,后面将转到 https://central.sonatype.com/,所以,我们需要调整jar包上传到中央仓库的方案。文档地址 https://central.sonatype.org/ 。
步骤
1.注册账号
如果有原来的ossrh账号,可以直接登录,如果没有就自行注册。
2.创建namespace
创建namespace,需要有一个域名,后续需要对域名的dns进行验证,成功才可以创建namespace成功。
3. 创建User Token
将生成的UsrToken,粘贴到settings.xml文件中
3. gpg工具
jar包上传的过程中,会进行gpg校验,如果校验不通过,则发布失败。gpg下载地址 https://gnupg.org/download/index.html#sec-1-2。根据自己的情况,选择合适的版本进行下载,安装完成之后,测试下指令是否正常。
gpg --version
mac下使用gpg没有遇到过问题,windows下使用gpg可能会比较麻烦。一般来说,主要是签名验证不通过。
说明,证书本身没有问题,但是在通过命令行执行的时候,没有办法找到对应的公钥。
解决方案:
直接将该秘钥对的公钥导出来,然后执行导入命令。
gpg --import .\bane.shi_0x6257XXX_public.asc
gpg --import .\bane.shi_0x6257XXX_public.asc
如果还是不行,要检查下,执行deploy的终端,与执行 gpg --import的终端是否是一致的(例如gitbash 和 power shell),如果不是,就用同样的终端再执行一次 gpg --import
4.编辑pom.xml
4.1 添加必要节点
添加除了基本的配置信息,我们还需要 name,description,url,licenses,developers,scm 这些信息,如果有缺失,在执行deploy的时候,会给出报错信息。
4.2 添加插件
原来ossrh的插件需要替换成新的, https://central.sonatype.org/publish/publish-portal-maven/
<build>
<plugins>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.7.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
</configuration>
</plugin>
</plugins>
</build>
4.3 完整的pom文件
<?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>com.trionesdev.weixin</groupId>
<artifactId>triones-weixin</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Triones:WeiXin</name>
<url>https://github.com/trionesdev/triones-weixin</url>
<description>TrionesDev Weixin SDK</description>
<licenses>
<license>
<name>Apache 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>Bane Shi</name>
<email>bane@moensun.com</email>
<organization>TrionesDev</organization>
<organizationUrl>https://www.trionesdev.com/</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:git@github.com:trionesdev/triones-weixin.git</connection>
<developerConnection>scm:git:ssh://github.com:trionesdev/triones-weixin.git</developerConnection>
<url>https://github.com/trionesdev/triones-weixin</url>
</scm>
<modules>
<module>triones-weixin-base</module>
<module>triones-weixin-miniprogram</module>
<module>triones-weixin-offiaccount</module>
<module>triones-weixin-oplatform</module>
<module>triones-weixin-app</module>
<module>triones-weixin-web</module>
<module>triones-weixin-dependencies</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<jackson.version>2.15.3</jackson.version>
<kotlin.version>2.1.21</kotlin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.trionesdev.weixin</groupId>
<artifactId>triones-weixin-dependencies</artifactId>
<version>${project.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>moensun</id>
<distributionManagement>
<snapshotRepository>
<id>moensun</id>
<url>https://nexus.moensun.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>central</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- (Option)2. javadoc jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>2.0.0</version>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>dokka</goal>
</goals>
</execution>
<execution>
<id>attach-kotlindocs</id>
<phase>package</phase>
<goals>
<goal>javadocJar</goal>
</goals>
</execution>
</executions>
<configuration>
<dokkaPlugins>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>kotlin-as-java-plugin</artifactId>
<version>2.0.0</version>
</plugin>
</dokkaPlugins>
</configuration>
</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>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.7.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.16.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
</plugins>
</build>
</project>
到这里准备工作就都做完了
5 推送
配置都完成之后,只需要选好对应的profile, 然后执行maven deploy就可以了。
三、查看结果
过一阵时间到中央仓库搜索看看,已经可以搜索到了。