美文网首页
将项目发布到Maven中央仓库

将项目发布到Maven中央仓库

作者: 扶竹 | 来源:发表于2019-04-22 10:53 被阅读0次

    先前都是配置pom.xml从Maven中央仓库下载依赖包,幻想着哪一天咱也有个包可以让别人自动下载啊,好高大上的感觉。

    现已成功利用Sonatype OSSRH将fuzhutech-ueditor提交给Maven的中央仓库。特发表此文以做纪念。对于我这样的新手而言,第一次发布项目到中央仓库,真不是一件容易的事情,所以很有必要整理步骤并说明一下在发布过程中遇到的一些问题。

    一、注册账号

    官方网站:http://www.sonatype.org/

    注册地址:https://issues.sonatype.org/secure/Signup!default.jspa

    注册后将信息保存到maven的conf/settings.xml中

    <servers>
        <server>
            <id>oss</id>
            <username>用户名</username>
            <password>密码</password>
        </server>
    </servers>
    

    二、创建工程单

    创建地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134,或者点击首页的中上部“Create”按钮。

    该步骤字面意思就是Create 一个 issue,我们要New 一个 Project(提出一个发布申请)。实质就是申请并占有坐标Group Id。我的Issue,https://issues.sonatype.org/browse/OSSRH-31467,参考说明各项字段内容:

    • Project:Community Support - Open Source Project Repository Hosting (OSSRH)

    • Issue Type:New Project

    • Summary:add a new project to the repository
      备注:随意写即可,仔细观察发现大家写的啥都有

    • Description:Various open source project,fuzhutech.com is my own domain.thank you!
      备注:可不填,有的声明own domain,但系统还是会让你确认是否拥有。

    • Group Id:com.fuzhutech
      备注:比较关键,系统会推荐是否选择com.github.fuzhutech

    • Project URL: https://github.com/fuzhutech/fuzhutech-ueditor
      备注:项目的站点,据实填写即可

    • SCM url:https://github.com/fuzhutech/fuzhutech-ueditor.git
      备注:据实填写,后续pom配置中也会用到

    其他的就没有什么了,提交之后就等工作人员离开确认吧,有时候工作人员会问你些你没有明确的内容,只需要回答就好。

    大概30分钟,系统自动回复

    Do you own the domain fuzhutech.com? If not, please read:
    http://central.sonatype.org/pages/choosing-your-coordinates.html You
    may also choose a groupId that reflects your project hosting, in this
    case, something like io.github.fuzhutech or com.github.fuzhutech

    我提交了,提交一条Comment

    Yes, we own the domain fuzhutech.com.

    第二天收到回复,审批初步通过了。

    Configuration has been prepared, ......

    三、上传前的准备

    在等待Issue的过程中,需要准备GPG以便对发布的文件进行签名。小编直接在http://www.gpg4win.org/download.html 下载Gpg4win-Vanilla版来使用。

    1. 查看是否安装成功

    gpg --version
    能够显示 GPG 的版本信息,说明安装成功了。

    2. 生成密钥对

    gpg --gen-key
    此时需要输入realName、Email、Comment等字段,其它字段可使用默认值,此外,还需要输入一个 Passphase,相当于一个密钥库的密码,最好记下来,因为后面会用到。

    3. 查看公钥

    gpg --list-keys
    输出如下信息:

    pub   2048R/DEF22C2D 2017-05-23
    uid       [ultimate] fuzhutech (fuzhutech) <fuzhutech@163.com>
    sub   2048R/A8C6E2E2 2017-05-23
    

    这里的公钥的 ID 是:DEF22C2D。

    4. 将公钥发布到 PGP 密钥服务器

    gpg --keyserver hkp://pool.sks-keyservers.net --send-keys DEF22C2D
    此后,可使用本地的私钥来对上传构件进行数字签名,而下载该构件的用户可通过上传的公钥来验证签名,也就是说,大家可以验证这个构件是否由本人上传的,因为有可能该构件被坏人给篡改了。

    5. 查询公钥是否发布成功

    gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys DEF22C2D
    key server上通过公钥 ID 来接收公钥,此外,也可以到sks-keyservers.net上通过公钥 ID 去查询。后续OSS进行签名验证成功的前提就是公钥发布成功。

    6. 在settings.xml中配置gpg的签名

    <profiles>
        <profile>
            <id>ossrh</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!--gpg.keyname>DEF22C2D</gpg.keyname-->
              <gpg.executable>gpg2</gpg.executable>
              <gpg.passphrase>the_pass_phrase</gpg.passphrase>
            </properties>
         </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>ossrh</activeProfile>
    </activeProfiles>
    

    the_pass_phrase配置的是生成密钥对时输入的Passphase

    四、配置pom.xml

    pom.xml在Maven中央库的审核比较严格,必须有固定的一些字段,包括:name、description、url、licenses、developers、scm 等基本信息。

    具体这个文件我就不贴了,请查看我的pom做参考:https://github.com/fuzhutech/fuzhutech-ueditor/blob/master/pom.xml

    distributionManagement则是定义了releasesnapshot发布的地址,这个在Issue通过审核后工作人员会给你,还有就是snapshotRepositoryrepository 中的 id 一定要与 setting.xmlserverid 保持一致。

    因为这些执行通常都独立于标准构建流程,所以把他们移动到一个profile,发布需要的source插件、javadoc插件、gpg插件都在这个profile里,这样只有在发布的时候才会生成源码包、文档API包和做gpg签名。

    五、上传到OSS

    待项目编写完成,就可以进行上传、发布了。在命令行进入项目pom.xml所在路径,执行命令提交到OSS服务器。

    1.提交一个snapshot版本,修改version加一个-SNAPSHOT:

    mvn clean deploy

    2.发布一个release版本,修改version 不要加-SNAPSHOT

    mvn clean deploy -P release
    可以手动修改,也可以执行
    mvn versions:set -DnewVersion=1.0.0

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

    六、在OSS中发布

    上传成功后需要在OSS系统中对操作进行确认,登录https://oss.sonatype.org/,在左边菜单找到“Staging Repositories”,点击,在右边上面一点有一个输入搜索框输入你的groupid进行快速定位,可以发现这时你的构件状态是“open”,勾选你的构件,查看校验的结果信息,如果没有错误就可以点击刚才勾选的checkbox上面右边一点的“close”按钮,在弹出框中“confirm”

    接下来系统会自动验证有效性,如果你的Group Idpom.xml没有错误,状态会自动变成closed,如果有问题,会在下面提示你那里有问题,加入有问题你可以点击drop按钮删掉这个构件,修改后重新执行步骤五。

    成功后状态会变为“closed”,点击release按钮发布。

    七、通知sonatype首次发布

    回到issue系统,找到你的那个申请的issue,写个comment,I promoted my first release, thanks,说明首次发布完成了,等待他们审核。

    审核通过后我们就可以在中央库搜索到我们的GroupId!搜索的地址是: http://search.maven.org/

    八、感谢

    成功的发布离不开各个前台帖子的指导,虽然我没有按照帖子一步成功,但我希望可以帮助一些人少走一些弯路,小白不易,且行且珍惜。

    相关文章

      网友评论

          本文标题:将项目发布到Maven中央仓库

          本文链接:https://www.haomeiwen.com/subject/ghlcgqtx.html