如何发布jar包到maven中央仓库详细教程

介绍

java开发中没少用各种jar包,特别是使用maven,gradle 构建工具,方便有效。总是只取不予,也应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去给大家使用的时候,应该怎么做呢?当然是发布到maven的中央仓库了

开始要注意这个几个Maven相关地址

  • 工单管理:https://issues.sonatype.org

就是申请上传资格和groupId 的地方,注册账号、创建和管理issue,Jar包的发布是以解决issue的方式起步的

  • 构件仓库 : https://oss.sonatype.org/#welcome

把jar包上传到这里,Release 之后就会同步到maven中央仓库。

  • 仓库镜像: http://search.maven.org/

最终工件可以在这里搜索到。

操作

注册工单管理(register sonatype)

第一访问工单管理界面,需要提前注册(sign up), 它是工单管理和构建仓库身份验证.点击"Sign up "

创建工单(nexus)

点击header 头 “create”按钮创建一个工单,主要用途注册你上传jar包基本信息,主要groupid,通过审核有两个目的:1.防止重复,约束groupid规范,定义grupid最好有所属的域名

比如:你申请 com.hippo 那么你最有有hippo.com 这个域名的所有权。如果你不符合还有一个解决办法,groupid 申请以:com.github.{账号名来定义}

如何发布jar包到maven中央仓库详细教程_第1张图片

创建成功后,接下来等待后台管理员审核,一般一个工作日以内,当Issue的Status变为RESOLVED后,就可以进行下一步操作了,否则,就等待… 如何发布jar包到maven中央仓库详细教程_第2张图片

审批通过后,通常管理员会给你留言配置方法,大体文字如下:

Configuration has been prepared, now you can:
Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshots
Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2
Promote staged artifacts into repository 'Releases'
Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/public
Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/staging
please comment on this ticket when you promoted your first release, thanks

配置已经准备好了,现在你可以: 将快照构件部署到存储库https://oss.sonatype.org/content/repositories/snapshots将发布工件部署到分段存储库中https://oss.sonatype.org/service/local/staging/deploy/maven2 将分阶段的工件推入存储库“发布” 从组https://oss.sonatype.org/content/groups/public下载快照并发布工件 从暂存组https://oss.sonatype.org/content/groups/staging下载快照,发布和暂存的工件 请在您宣传第一个版本时对此票发表评论,谢谢

配置项目工程pom.xml

在工程的pom.xml文件中,引入Sonatype官方的一个通用配置oss-parent,这样做的好处是很多pom.xml的发布配置不需要自己配置了

<parent>
        <groupId>org.sonatype.ossgroupId>
        <artifactId>oss-parentartifactId>
        <version>7version>
    parent>

并增加Licenses、SCM、Developers信息

 <licenses>
        <license>
            <name>The Apache Software License, Version 2.0name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txturl>
            <distribution>repodistribution>
        license>
    licenses>
    <scm>
        <tag>mastertag>
        <url>[email protected]:cloudnil/marathon-client.giturl>
        <connection>scm:git:[email protected]:cloudnil/marathon-client.gitconnection>
        <developerConnection>scm:git:[email protected]:cloudnil/marathon-client.gitdeveloperConnection>
    scm>
    <developers>
        <developer>
            <name>cloudnilname>
            <email>[email protected]email>
            <organization>CloudNilorganization>
        developer>
    developers>

配置Maven setting.xml

setting.xml放在Maven安装文件/conf目录下

<servers>
    <server>
      <id>sonatype-nexus-snapshotsid>
      <username>Sonatype 账号username>
      <password>Sonatype 密码password>
    server>
    <server>
      <id>sonatype-nexus-stagingid>
      <username>Sonatype 账号username>
      <password>Sonatype 密码password>
    server>
  servers>

配置gpg-key

如果是使用的windows,建议下载git客户端,可以在git bash 提供窗口操作,在命令行中执行 ** gpg --gen-key** 生成,过程中需要填写名字、邮箱等,其他步骤可以使用默认值,不过有个叫:Passphase的参数需要记住,这个相当于是是密钥的密码,下一步发布过程中进行签名操作的时候会用到

如何发布jar包到maven中央仓库详细教程_第3张图片

Deploy部署

这步就简单了,就是一套命令:

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

默认启动:maven-javadoc-plugin 插件 如果要忽略,可以跟参数:

-Dmaven.javadoc.skip=true

Release发行

进入https://oss.sonatype.org/#stagingRepositories查看发布好的构件,点击左侧的Staging Repositories,一般最后一个就是刚刚发布的jar了,此时的构件状态为open。 打开命令行窗口,查看gpg key并上传到第三方的key验证库:

gpg --list-keys
C:/Users/VF/AppData/Roaming/gnupg/pubring.gpg
---------------------------------------------
pub   2048R/824B4D7A 2016-01-06
uid       [ultimate] cloudnil 
sub   2048R/7A10AD69 2016-01-06

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 824B4D7A
gpg: sending key 824B4D7A to hkp server keyserver.ubuntu.com

如何发布jar包到maven中央仓库详细教程_第4张图片

以上操作完成回到 https://oss.sonatype.org/#stagingRepositories,选中刚才发布的构件,并点击上方的close–>Confirm,在下边的Activity选项卡中查看状态,当状态变成closed后,执行Release–>Confirm,并在下边的Activity选项卡中查看状态,成功后构件自动删除,一小段时间(约1-2个小时)后即可同步到maven的中央仓库。

参考资料

  • http://www.cnblogs.com/softidea/p/6743108.html
  • http://www.sojson.com/blog/250.html
  • https://segmentfault.com/a/1190000009450347

你可能感兴趣的:(maven)