文章
问答
冒泡
将jar包推送到maven中央仓库(2025新-收藏备用)

前言

之前要将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就可以了。


三、查看结果

过一阵时间到中央仓库搜索看看,已经可以搜索到了。

maven

关于作者

落雁沙
非典型码农
获得点赞
文章被阅读