发布Jar包到Maven中央仓库 在项目开发过程中,我们常常会使用 Maven / Gradle 从仓库拉取开源的第三方 jar 包,可能是私有仓库,可能是 Maven 中央仓库,也可能是第三方的镜像。本文将一些简单实用的操作步骤和示例,带领大家将自己写好的代码或开源项目发布到 Maven中央仓库( https://mvnrepository.com )中,让其他人可以直接依赖你的 jar 包,而不需要先下载你的代码 / jar 后 install 到本地。 Maven中央仓库并不支持直接发布 jar 包,需要将 jar 包发布到一些指定的第三方Maven仓库,然后该仓库再将 jar 包同步到 Maven中央仓库,Sonatype便是 Maven中央仓库指定的暂存库。
注册帐号 入口有点难找,提示一下,在 Build 选项卡里面https://issues.sonatype.org/secure/Signup!default.jspa
密码设置十分变态,12位,必须包含大小写数字特殊字符,有必要拿小本本记一下。而且最好不要设置在 xml 中需要转义的特殊字符,比如 &,否则后面配置 xml 时还要转义!不要问我为啥知道的。
Jira申请 点击新建按钮或者直接访问 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 ,提一个 issue,只有申请通过了才有可能上传到中央仓库上,一般 5 分钟左右会有回应,我昨晚 10 点左右申请的,不知道是不是时差问题他们回应比较快:
Project选择【Community Support - Open Source Project Repository Hosting (OSSRH)】
Issue Type:选择【New Project】
Summary和Description :自己填,注意要用英文
Group Id:这个必须要注意,如果你用的是GitHub, 一定要是 io.github.你的github用户名, 例如我的项目地址是: https://github.com/admin4j/common-http , 那我的 groupId就是 io.github.admin4j.如果你有自己的域名和项目地址也可以,官方人员会询问你是否有这个域名的所有权.在你项目的pom里一定要使用这个groupId,最好包路径也使用
Project URL: 是你的项目地址
SCM url: 是你的项目git地址
Username(s): 可以不用填,这是能辅助你提交项目的合作人的帐号,前提是他也得在这个Jira注册
其他使用默认值就行了 大概十分钟会收到恢复,如果你的 Group Id 随便写的话会出下面的问题
gpg 环境安装 gpg的主要作用是生成密钥对,会用于后续我们组件发布的校验。
载地址: https://www.gnupg.org/download/ , 安装时会附带安装UI程序kleopatra
在安装完成后,运行kleopatra程序,新建密钥对
导出证书 发布证书
配置maven settings.xml 1 2 3 4 5 <server > <id > ossrh</id > <username > hnyufushan</username > <password > @Cckmima531010</password > </server >
在项目的pom.xml文件中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <licenses > <license > <name > Apache License, Version 2.0</name > <url > http://www.apache.org/licenses/LICENSE-2.0.txt</url > <distribution > repo</distribution > <comments > A business-friendly OSS license</comments > </license > </licenses > <scm > <url > https://gitee.com/hnyufushan_admin/bzglpt</url > <connection > https://gitee.com/hnyufushan_admin/bzglpt.git</connection > </scm > <developers > <developer > <name > hnyufushan</name > <id > hnyufushan</id > <email > 82271092@qq.com</email > <roles > <role > Developer</role > </roles > <timezone > +8</timezone > </developer > </developers >
发布到maven中央仓库会要求我们在上传jar到同时,必须同步发布对应到Javadoc、source、asc(利用gpg生成到校验),所以需要在maven中添加以下构建插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 <profiles > <profile > <id > default</id > <activation > <activeByDefault > true</activeByDefault > </activation > <distributionManagement > <snapshotRepository > <id > ossrh</id > <url > https://s01.oss.sonatype.org/content/repositories/snapshots</url > </snapshotRepository > <repository > <id > ossrh</id > <url > https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url > </repository > </distributionManagement > <build > <plugins > <plugin > <groupId > org.sonatype.plugins</groupId > <artifactId > nexus-staging-maven-plugin</artifactId > <version > 1.6.7</version > <extensions > true</extensions > <configuration > <serverId > ossrh</serverId > <nexusUrl > https://s01.oss.sonatype.org/</nexusUrl > <autoReleaseAfterClose > true</autoReleaseAfterClose > </configuration > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-source-plugin</artifactId > <version > 2.2.1</version > <executions > <execution > <id > attach-sources</id > <goals > <goal > jar-no-fork</goal > </goals > </execution > </executions > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-javadoc-plugin</artifactId > <version > 2.9.1</version > <configuration > <additionalJOptions > <additionalJOption > -Xdoclint:none</additionalJOption > </additionalJOptions > </configuration > <executions > <execution > <id > attach-javadocs</id > <goals > <goal > jar</goal > </goals > </execution > </executions > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-gpg-plugin</artifactId > <version > 1.5</version > <executions > <execution > <id > sign-artifacts</id > <phase > verify</phase > <goals > <goal > sign</goal > </goals > </execution > </executions > </plugin > </plugins > </build > </profile > </profiles >
deploy 在你的项目下:mvn clean deploy 或者IDE中配置好刚才的setting.xml,然后deploy,日志中出现SUCCESS ,成功了。
发布 上面执行完成之后,登陆nexus: https://s01.oss.sonatype.org/#stagingRepositories 点击上方的Close,会检测你的jar包是否存在问题,如果存在问题,点击下方的Activity即可查看具体的问题,照着问题修复即可。如果有问题要把原包删除,点击drop即可,再重新deploy。 检测完成后没问题后,上方的release就会变成可点击的状态,点击release后,会收到一份邮件。需要等待一会大概半小时才同步到maven仓库,大概好几个小时才可以可以在 https://search.maven.org/ 中搜到。 至此。已完成将项目发布至中央仓库。