Java

发布项目到maven中央库

2020-04-13  本文已影响0人  WANGGGGG

前言

在我正式提交版本成功之前,百度上已经有很多指导性(当然很多都是抄的很直接引用的)的说明了,但是我在提交过程中还不是很顺利,所以我在这里优化一下,仅仅是优化一下,毕竟前辈们还是很强大的

一、创建一个账号

用户名,密码,邮箱,一系列信息填写之后完成注册,登录
注意,邮箱一定要填写正确

二、创建工单

创建工单.png

然后工作人员会跟你进行一系列对话,确认你的groupId,确认github是不是你本人的,然后会看到以下信息


权限开通成功.JPG

让你在发布第一个release的时候回复他一下。

三、更新maven的settings.xml

在servers标签中增加如下内容,

<servers>
    <server>
    <!--release版本的库id,必须要和后面pom中的配置对应-->
        <id>repository</id>
        <username>sonatype的用户名</username>
        <password>密码</password>
    </server>
    <server>
    <!--snapshots版本的库id,必须要和后面pom中的配置对应-->
         <id>snapshots</id>
         <username>用户名</username>
         <password>密码</password>
     </server>
</servers>

四、修改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.github.wangcanfeng01</groupId>
    <artifactId>freedom-ragnaros</artifactId>
    <version>1.0.RELEASE</version>
    <!--继承一下配置,好用!也可以不继承,自己写所有的,看个人喜欢-->
    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>



    <distributionManagement>
        <repository>
        <!--id必须和上面的配置对应上-->
            <id>repository</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
        <snapshotRepository>
        <!--id必须和上面的配置对应上-->
            <id>snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <licenses>
        <license>
            <name>BSD 3-Clause License</name>
            <url>https://opensource.org/licenses/bsd-3-clause</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/wangcanfeng01/ragnaros</url>
        <connection>https://github.com/wangcanfeng01/ragnaros</connection>
        <developerConnection>http://www.canfeng.xyz/home</developerConnection>
    </scm>

    <developers>
        <developer>
            <name>wangcanfeng</name>
            <email>373811598@qq.com</email>
            <url>https://github.com/wangcanfeng01</url>
        </developer>
    </developers>

    <dependencies>
        <!--各种依赖-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!--打包源码的插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--生成javadoc,如果你没有配置javadoc的环境变量,这里就要加一下javadoc的路径-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <configuration>
                    <javadocExecutable>C:/Program Files/Java/jdk1.8.0_151/bin/javadoc</javadocExecutable>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--gpg加密插件,必须得有,而且还要安装gpg的工具,下面会说的-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

五、gpg密钥生成

gpg官网下载页面

gpg工具下载.png [图片上传中...(生成秘钥.png-6a895a-1586747315277-0)]

下载完之后傻瓜式安装,然后生成秘钥
(1)执行语句验证是否安装成功
gpg --version
提示:如果你安装成功了,但是在编译器(idea)中说没有gpg指令,那么你就要重启一下编译器
(2)然后生成秘钥
gpg --gen-key

生成秘钥.png
按照提示输入各种信息后,会有秘钥生成,记住它,不要忘了!因为后面deploy的时候需要用到
(3)然后将公钥发布到服务器上
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 你的公钥
(4)查看公钥是不是已经发布到库上面了
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 你的公钥
下面这个命令可以让你查看到你所拥有的公钥信息
gpg --list-keys

六、deploy

执行下面这条命令,之后输入你的秘钥信息,然后就会将jar包发布出去了,如果你的网不行的话,可能发布过程会很长哦
mvn clean deploy -P release

七、close和release

这个时候我们的jar包还没有正式发布,需要去下面这个网站close和release一下
正式发布链接

release和close.png
可能你在release的时候会失败,如果它提示的是你的public key的问题
参考stackoverflow上面的解决方案,我把我的公钥发布到这个上面之后就成功的release了
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys EE539F98
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys EE539F98
stackoverflow上面的解决方案
注意这里你就要回复一下工作人员了,告诉他你已经成功的release了
然后他会回复你
release成功.JPG
到这里就可以庆祝了,项目已经发布成功了,打一会游戏坐等。

八、在中央库中查询

上面的流程完了之后,过段时间我们可以在这个页面查询jar包信息
https://search.maven.org
但是在https://mvnrepository.com/这里还不能查到,可能过两天才行。

九、依赖包引入测试

这里就可以通过pom引入你的jar包了,终于成为广大开源爱好者的一员了。

参考文献

清晰的教你如何将 Maven 项目上传至 中央仓库以及版本更新

上一篇下一篇

猜你喜欢

热点阅读