怎样提交本地jar到Maven中央仓库(windows)

最近在开发推送SDK,在做push sdk的服务端sdk的java版本的时候,就一直想把client能构建到Maven中央仓库,方便开发者使用。

项目git地址 : https://github.com/MOBX/mobpush-api-java-client  有需要可以参考下,主要是里面的pom.xml ,下面的也会用到。

先上结果 http://search.maven.org/#artifactdetails%7Ccom.mob.sdk.push ,其实网上也有很多教程,但是还是不是很清晰,好像都是一个版本来的,没有给我等使用windows屌丝的具体指明完整道路,顾记录此文章。


下面说下具体步骤把 :

1、注册sonatype账号

因为Maven中央仓库是由sonatype免费给维护的,所以需要到 https://issues.sonatype.org/secure/Signup!default.jspa 注册sonatype账号。一定要记得此账号密码,后面配置maven的servers节点需要用到此账号和密码。

还需要记录一个地址 : https://oss.sonatype.org (这个后面issues里面也有会连接的)

这个就是私服仓库了,可以在里面查看到jar的状态等信息

image

2、创建发布申请的issues

可以到地址https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 去发布申请的issues,里面有需要注意填写的内容

  • Group Id  : 这个填写你maven项目的Group Id 就好了,但是有注意这个可能在审核issues的时候,工作人员会询问是否有group id的所有权。

image

 * SCM url : 这个就需要填写源代码的路径,需要审核issues的人员能访问,我使用的是github (https://github.com/MOBX/mobpush-api-java-client)  这个也是需要后面在项目pom.xml里面配置scm标签的。

  • Project URL: 这个我这里填写的是官网地址

其他没啥了,可以的话按照要求填写相关的描述即可,提交和需要等待审核,这个需要点时间,应该要看情况吧,我提交的issues审核很快就通过,自己多关注下哈,也会有邮件通知的。

等到issues的状态变更为Resolved就可以了,看到下面这个图表示你已经成功通过了开始的审核,后面就可以进行构建上传了。

image

3、使用 GPG 生成密钥对

需要下载一个GPG 来进行文件加密,windows 可以到地址 https://www.gpg4win.org/download.html 下载 按照步骤安装即可。

在安装目录的bin下打开Kleopatra即可

image

在窗口上进入  文件--> 新建密钥对-->创建个人OpenPGP密钥对

image

输入名称和邮箱,一直下一步下一步到输入密码界面,这里的密码需要记住,是后面maven打包的时候需要输入的确认密码

image

4、maven配置和pom.xml配置

在您maven的setting.xml 加入如下配置:

  <servers> 
    <server>
      <id>自定义id,需要和后面pom.xml对应即可,如ossrh</id>
      <username>您申请的sonatype账号</username>
      <password>sonatype账号对应密码</password>
    </server> 
  </servers>

在您项目的pom.xml 增加其中没有的配置(如下是 mobpush client for java 的一个pom.xml例子):

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.mob.sdk.push</groupId>
	<artifactId>mobpush-api-java-client</artifactId>

        <!-- 请不要使用SNAPSHOT版本不然后面步骤不能继续-->
	<version>1.0.0</version>
	<name>mobpush-api-java-client</name>
	<url>https://github.com/MOBX/mobpush-api-java-client</url>
	<description> MobPush API for Java </description>

	<licenses>
		<license>
			<name>The Apache License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>hlliu</name>
			<email>[email protected]</email>
			<organization>mob</organization>
			<organizationUrl>http://www.mob.com</organizationUrl>
		</developer>
	</developers>

  <!-- 保持和申请的issues里面填写的scm一致 -->
	<scm>
		<connection>
         scm:git:https://github.com/MOBX/mobpush-api-java-client.git
      </connection>
		<developerConnection>
         scm:git:https://github.com/MOBX/mobpush-api-java-client.git
      </developerConnection>
		<url>https://github.com/MOBX/mobpush-api-java-client</url>
		<tag>1.0.0</tag>
	</scm>



	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<github.global.server>github</github.global.server>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<jdkVersion>1.6</jdkVersion>
		<jdkVersion.test>1.6</jdkVersion.test>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.3</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.31</version>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
                      <!-- 打包的 -P参数 -->
			<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>
                                                <!-- -Xdoclint:none 是为了生存apidoc的时候检查不必太严格-->
						<configuration>
							<additionalparam>-Xdoclint:none</additionalparam>
						</configuration>
						<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.6</version>
						<executions>
							<execution>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
			<distributionManagement>
				<snapshotRepository>
                                        <!--- 此处的id需要和setting.xml 配置的service的id一致 -->
					<id>ossrh</id>
					<url>https://oss.sonatype.org/content/repositories/snapshots</url>
				</snapshotRepository>
				<repository>
					<id>ossrh</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 进行数字签名。此外,请注意pom.xml里面注释需要保持一致的地方。

5、构建发布jar

进入您项目执行maven命令

mvn clean deploy -P release verify -Dgpg.passphrase={您PGP密码}

-P release是构建环境,需要和pom.xml里面配置一致,在执行过程中,会弹出提示框让你输入PGP的密码,输入后确认即可,看网络情况,我本地上传比较快,大概1分钟就好了

6、在OSS中发布构件

以为进行第5步就OK了,还需要继续呢,需要在OSS里面发布构建,登陆 https://oss.sonatype.org (使用 sonatype 申请的账号和密码即可)

image.png

登陆后选择Staging Repositories ,可以看到您刚上传的的是open状态,勾选后点击上面的Close即可,会弹框确认,确认就好了。

(需要等待N分钟,也许1分钟就好了)

重新刷新本页面,看到您上传的项目是close状态,此时再勾选后选择上面的Release,也会提示弹框确认,确认就好了。

7、通知关闭issues

以上步骤完成后,就等待最终的审核了。到您申请的issues的页面 增加备注 “The component has been successfully released”(告知就好了,怎么写自己看着办),好了 ,确实已经到了最后审核了 我提交的大概1、2个小时就好了,好了也会有邮件通知的。

审核通过后可以到 http://search.maven.org 查看,就如我开始给的结果,over ~

猜你喜欢

转载自my.oschina.net/u/3093903/blog/1624783