`
agapple
  • 浏览: 1583611 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

googlecode deploy to mvn repo(续)

 
阅读更多

背景

继上一篇,已经成功尝试了deploy到google svn上,接下来尝试deploy到maven central repo

过程

参考资料:http://maven.apache.org/guides/mini/guide-central-repository-upload.html

 

我这里选择的是Sonatype Oss Responitory做为目标仓库,由sonatype会定时同步到mvn central repo

 

sonatype的发布步骤:

 

在这里,我把实际操作内容做一下记录,整个过程还是比较漫长的,需要有人工的介入。

步骤一:

创建一个jira,填写相应的project信息,我这里创建了一个:https://issues.sonatype.org/browse/OSSRH-1898

主要填写的内容:

 

  1. 帐户名/邮箱
  2. groupId , artifactId信息, project url
填写完成后,暂时还不能登录对应的https://issues.sonatype.org

步骤二:

耐心等待sonatype管理员的审核,审核通过后,会给你发送邮件,比如加入了它们的mail list,还有对应的mvn repo相关信息

 

步骤三:

调整pom.xml,添加相关的信息:

 

  • <modelVersion>
  • <groupId>
  • <artifactId>
  • <version>
  • <packaging>
  • <name>
  • <description>
  • <url>
  • <licenses>
  • <scm><url>
  • <scm><connection>
  • <developers>
以前一般都不太关注licenses,scm,developers信息,反正按照要求进行填写。
主要是scm,我这里使用了git进行代码管理
<scm>
   <url>git@github.com:agapple/mapping4java.git</url>
   <connection>scm:git:git@github.com:agapple/mapping4java.git</connection>
   <developerConnection>scm:git:git@github.com:agapple/mapping4java.git</developerConnection>
</scm>

修改pom.xml,添加sonatype做为父工程,主要是继承其相关的pom配置

 

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

 

最后修改一下settings.xml文件中,添加对应的deploy server的username/password

 

 

<servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
  </servers>

 

 这里的sonatype-nexus-snapshots,sonatype-nexus-staging都是一个约定,都是通过继承了sonatype pom.xml,可以简化了自己比较多的配置。

步骤四:

测试一下snapshot版本的deploy 运行:

 

mvn clean deploy

 

 

最后,通过Nexus UI进行查看:


步骤五:

尝试一下稳定版本的release.

运行:

 

$ mvn release:clean

export GPG_TTY=$(tty)
$ mvn release:prepare

 

运行过程中,会要求输入你对应的版本号信息。


 

继续下去,会提示你输入对应的PGP密码,相关参考文档: (https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven)

第一次的化,需要生成一个PGP

 

$sudo apt-get install gnupg
$gpg --gen-key

 

按照它的提示,一直默认下去,只需要输入一下自己的name , email , comment,最后会要求你输入一个密码。注意这个密码就是mvn release:prepare需要输入的密码

 

截一张图看下,可以看下它的提示文字,国外的还是挺可爱的!

 

最后提交一下public key , gpg --keyserver hkp://pool.sks-keyservers.net --send-keys XXX 


步骤六:

生成PGP密钥后,mvn release:prepare就可以正常通过。

最后运行一下: 

 

mvn release:perform

第一次提交,会遇到401错误。

 

401错误主要是认证失败,继续给管理员留言,请求处理。

补充:

 

测试过程中,发现使用mvn release:preform一直出现401错误,使用tcpdump进行抓包后,蓦然发现抓到的数据全都是乱码,使用了https。无奈

最后,使用了手工release的方式:

 

mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0.jar
mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0-sources.jar -Dclassifier=sources
mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=mapping-1.0.0.pom -Dfile=mapping-1.0.0-javadoc.jar -Dclassifier=javadoc
手工release了jar , sources , javadocs三个jar包.
 
需增加javadocs,soruces打jar配置:
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-javadoc-plugin</artifactId>
	<version>2.7</version>
	<executions>
		<execution>
			<id>attach-javadocs</id>
				<goals>
					<goal>jar</goal>
				</goals>
			</execution>
		</executions>
	<configuration>
	  <encoding>${file_encoding}</encoding>
	  <charset>${file_encoding}</charset>
	  <doclet>org.jboss.apiviz.APIviz</doclet>
	  <docletArtifact>
		<groupId>org.jboss.apiviz</groupId>
		<artifactId>apiviz</artifactId>
		<version>1.3.0.GA</version>
	  </docletArtifact>
	  <useStandardDocletOptions>true</useStandardDocletOptions>
	  <breakiterator>true</breakiterator>
	  <version>true</version>
	  <author>true</author>
	  <keywords>true</keywords>
	</configuration>
</plugin>
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-source-plugin</artifactId>
	<version>2.1.2</version>
	<executions>
		<execution>
		<id>attach-sources</id>
			<goals>
				<goal>jar</goal>
			</goals>
		</execution>
	</executions>
</plugin>

 

说明: 这里使用了apiviz进行javadocs类图生成,效果如下


步骤七按照文档的要求,给管理员留言,继续等待审核

步骤八

https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide,按照这里的8. Release It进行release操作,最后就安心的等待同步到mvn central repo。

 

感触

 

整个过程下来,还是比较繁琐的,是一次比较不错的体验。希望自己能够多多坚持,多多完善相关的代码。

  • 大小: 70.4 KB
  • 大小: 242.3 KB
  • 大小: 232.2 KB
  • 大小: 164.5 KB
  • 大小: 234.7 KB
  • 大小: 22.5 KB
  • 大小: 63.4 KB
分享到:
评论
4 楼 melin 2012-03-09  
replace keyserver.ubuntu.com with any of the following servers:
pool.sks-keyservers.net
subkeys.pgp.net
pgp.mit.edu
keys.nayr.net
keys.gnupg.net
3 楼 agapple 2011-07-11  
代码已经进mvn中央仓库:http://search.maven.org/#browse%7C1648503853

可通过如下groupid/artifactid进行下载:
<dependency>
  <groupId>com.googlecode.mapping4java</groupId>
  <artifactId>mapping</artifactId>
  <version>1.0.0</version>
</dependency>
2 楼 agapple 2011-07-11  
khotyn 写道
不错,以前基本上没有关注过mvn的release命令。


貌似mvn release到sonatype有问题,deploy代码时候一直是401错误,后来换成手工的gpg:sign-and-deploy-file才终于搞定了,现在在等同步,期待明天能从http://mvnrepository.com/搜到自己的project
1 楼 khotyn 2011-07-11  
不错,以前基本上没有关注过mvn的release命令。

相关推荐

Global site tag (gtag.js) - Google Analytics