talent

将maven项目发布到中央仓库

发表于:2018-12-31 22:53:22 点击量:0 赞:未知

说明:下文中如果标有“(一次性)”,表示这个步骤只有在第一次发布时才需要用到

注册Sonatype用户(一次性)

https://issues.sonatype.org/secure/Signup!default.jspa

注册sonatype成为用户

创建新项目(一次性)

  • 登录后,来到页面: https://issues.sonatype.org/secure/Dashboard.jspa

  • 点击顶部右边的“create”按钮,在弹出的界面中填上自己的东西,带“*”号的必填
    创建maven新项目

  • 接下来就要等对方的审核了(有回复后,会发邮件通知你的),记得回复对方

按要求补全pom.xml(一次性)

  • pom必须包括【name、description、url、licenses、developers、scm】等信息,也就是说不是什么pom.xml都能提交的。

  • t-io是放在parent项目的pom.xml中的,下面列举一部分容易被漏掉的信息,详情可以参考 https://github.com/tywo45/t-io/raw/master/src/parent/pom.xml

  • 贴出关键部分代码
<description>t-io is a aio framework for java</description>    
<licenses>
    <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>https://github.com/tywo45/t-io/blob/master/LICENSE</url>
    </license>
</licenses>


<scm>
    <connection>scm:svn://gitee.com/tywo45/t-io</connection>
    <developerConnection>scm:svn://gitee.com/tywo45/t-io</developerConnection>
    <url>svn://gitee.com/tywo45/t-io</url>
</scm>

<developers>
    <developer>
        <id>tanyaowu</id>
        <name>tanyaowu</name>
        <email>tywo45@163.com</email>
        <url>https://github.com/tywo45/t-io</url>
    </developer>
</developers>


<!-- 此处省略若干内容-->


<!-- 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>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.3</version>
    <configuration>
        <aggregate>true</aggregate>
        <additionalparam>-Xdoclint:none</additionalparam>
    </configuration>
</plugin>


<!-- 此处省略若干内容-->

<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.10.3</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <additionalparam>-Xdoclint:none</additionalparam><!-- 防止生成docs时报错 -->
                            </configuration>
                        </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>oss</id>
                <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            </snapshotRepository>
            <repository>
                <id>oss</id>
                <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
            </repository>
        </distributionManagement>
    </profile>
</profiles>

配置setting.xml(一次性)

配置maven的setting.xml

  • 图中的username和password是你第一步注册的用户名和密码,那个id要和pom.xml中的distributionManagement元素里的配置保持一致(都叫oss)

配置GPG(一次性)

  • 下载并安装: https://www.gpg4win.org/download.html

  • 安装完后检查:gpg —version
    检查gpg安装是否正确

  • 生成密钥对:gpg —gen-key
    生成密钥对:gpg --gen-key

  • 查看公钥:gpg —list-keys
    查看公钥:gpg --list-keys

  • 发布公钥到PGP密钥服务器:gpg —keyserver hkp://pool.sks-keyservers.net —send-keys 20710E4ED8970DB33D2E371780B987C747624C2C
    发布公钥到PGP密钥服务器

发 布(deploy)

  • 确认第二步在OSS上创建的项目被审核通过后,就可以发布项目到maven中心仓库了
    mvn clean deploy
    
  • 执行这个命令时,会让你输入密码,这个密码就是“配置GPG”时,你输入的那个密码

  • 一切正常后,访问https://oss.sonatype.org/#stagingRepositories

  • 搜索你的项目
    在oss.sonatype上搜索你的maven项目

  • close你的项目(由于t-io暂时没有发布计划,此图为网上找的一张图并作了一些标注)
    close maven project

  • close过程大概需要1分钟左右的时间,当close步骤完成后,你需要release你的项目(由于t-io暂时没有发布计划,此图为网上找的一张图,该图的release按钮是灰的,是因为close步骤还没完成)
    release your maven project

查看maven发布情况

以t-io为例,查看发布情况的地址为(你项目的地址,只需要把groupid换一下就好了): https://oss.sonatype.org/content/groups/public/org/t-io/

终于大功告成

第一次发布maven工程到maven中心仓库,还是比较辛苦的,很奇怪这么复杂的过程,第一波用户是如何起来的

TCP连接数:, IP数:
    发 送