如何把jar包发布到中央仓库

一、在网站https://issues.sonatype.org/secure/Dashboard.jspa注册一个帐号(请记住对应的帐号和密码,以后须要用到)html

此外,Sonatype 还提供了一个名为OSS 的系统,具体的构件发布是在这个oss系统上,java

Sonatype OSS 地址:https://oss.sonatype.orggit

这里的用户名和密码就是上面在JIRA中注册的,在这里能够查询到全世界已发布的构件,固然咱们发布构件的操做也在这里进行。apache

二、登陆后选择后选择Createubuntu

Project:项目默认值服务器

IssueType:默认值网络

Summary:说明,请介绍一下项目app

GroupId:项目的分组名称jsp

ProjectURL:访问项目的URL,写仓库地址maven

SCMurl:访问项目的URL,写仓库地址

其余的选填

填写完毕后点击Create,而后等待状态变成RESOLVED,以下图

Comments的回复以下:

三、使用GPG 生成密钥对

Windows系统直接去https://www.gpg4win.org/download.html下载Gpg4win,安装好后经过gpg --version,出现版本等信息就安装成功了。若是是Linux,能够经过yum install gpg安装)

生成密钥对,在cmd窗口中输入命令:

gpg --gen-key

提示输入:

Real name

Email address

根据提示输入大写O确认无误

而后弹出一个输入密码的对话框,请务必记住该密码

输入密码确认

查看公钥

gpg --list-keys

将公钥发布到 PGP 密钥服务器(gpg --list-keys能够看到公钥id)

gpg--keyserver hkp://pool.sks-keyservers.net --send-keys 5292CC898762C9D1237A561608DE5FBA6F7142E6

gpg--keyserver hkp://keyserver.ubuntu.com:11371 --send-keys5292CC898762C9D1237A561608DE5FBA6F7142E6

查询公钥是否发布成功

gpg --keyserverhkp://pool.sks-keyservers.net --recv-keys5292CC898762C9D1237A561608DE5FBA6F7142E6

四、修改Maven配置文件,须要同时修改全局的setting.xml和项目的pom.xml文件

setting.xml修改:

找到maven的全局配置文件settings.xml,在里面找到 节点,这个节点默认是注释掉的,增长以下配置:

<servers>

<server>

                          <id>   sonatype</id>

                <username>用户名</username>

                 <password>密码</password>

</server>

</servers>

这里的id是要在pom.xml里面使用的,用户名和密码就是在Sonatype上面注册的用户名和密码。

pom.xml修改:

<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.gitee.hjj520</groupId>
    <artifactId>payment-core</artifactId>
    <version>0.0.1-RELEASE</version>
    <name>payment-core</name>
    <description>a project about payment</description>
    <url>https://gitee.com/hjj520/payment-core</url>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <developers>
        <developer>
            <name>happyhuangjinjin</name>
            <email>happyhuangjinjin@sina.com</email>
        </developer>
    </developers>
    <scm>
        <tag>master</tag>
        <connection>https://gitee.com/hjj520/payment-core.git</connection>
        <developerConnection>https://gitee.com/hjj520/</developerConnection>
        <url>https://gitee.com/hjj520/payment-core.git</url>
    </scm>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <!-- Source -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.2.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Javadoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.9.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- 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>
            <distributionManagement>
                <snapshotRepository>
                    <id>sonatype</id>
                    <url>
                        https://oss.sonatype.org/content/repositories/snapshots/
                    </url>
                </snapshotRepository>
                <repository>
                    <id>sonatype</id>
                    <url>
                        https://oss.sonatype.org/service/local/staging/deploy/maven2/
                    </url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>
</project>

pom.xml中必须包括:name、description、url、licenses、developers、scm等基本信息,使用了 Maven 的 profile 功能,只有在 release 的时候,建立源码包、文档包、使用 GPG 进行数字签名。此外,snapshotRepository 与 repository 中的 id 必定要与 setting.xml 中 server 的 id 保持一致。若是是多模块项目的话,只须要在父pom.xml中声明这些,子pom.xml中只须要修改相应的一些信息,如name标签。

 

五、上传构件到 OSS 中

本身配置profiles时使用:

mvn clean deploy -Prelease

使用官网parent时使用:

mvn clean deploy -P sonatype-oss-release-Darguments="gpg.passphrase=密钥密码"

当执行以上 Maven 命令时,会自动弹出一个对话框,须要输入上面提到的 Passphase,它就是刚才设置的 GPG 密钥库的密码。随后会看到大量的 upload 信息,由于在国内网络的缘故,时间有点久,耐心等待吧。

注意:此时上传的构件并未正式发布到中央仓库中,只是部署到 OSS 中了,下面才是真正的发布。

六、在OSS 系统中发布构件

在 https://oss.sonatype.org系统中,使用本身的 Sonatype 帐号登陆后,可在 Staging Repositories 中查看刚才已上传的构件,这些构件目前是放在Staging 仓库中,可进行模糊查询,快速定位到本身的构件。此时,该构件的状态为 Open,须要勾选它,而后点击 Close 按钮。系统会自动验证该构件是否知足指定要求,当验证完毕后,状态会变为Closed。

发现release版本才会出如今Staging Repositories里,snapshot版本不会出如今这里

最后,点击 Release 按钮来发布该构件

在Staging Profiles能够看到正在release

七、通知 Sonatype 构件已成功发布

这个前面的Sonatype工做人员其实在审核你的Issue时,在comment中已经提示你了,在Issue下面回复一条“构件已成功发布”的评论,这是为了通知 Sonatype 的工做人员为须要发布的构件作审批,发布后会关闭该Issue。

 

等待构件审批经过

这个又只能等待了,固然他们晚上上班,仍是次日看。当审批经过后,将会收到邮件通知。

 

从中央仓库中搜索构件

这时,就能够在maven的中央仓库中搜索到本身发布的构件了,之后能够直接在pom.xml中使用了!

中央仓库搜索网站:http://search.maven.org/

第一次成功发布以后,之后就不用这么麻烦了,能够直接使用Group Id发布任何的构件,固然前提是Group Id没有变。

 

之后的发布流程:

a)构件完成后直接使用maven在命令行上传构建;

b)在https://oss.sonatype.org/close并release构件;

c)等待同步好(大约2小时多)以后,就可使用了

跟多技术分享尽情关注

http://blog.csdn.net/hj7jay/article/details/51130398

相关文章
相关标签/搜索