`
agapple
  • 浏览: 1595962 次
  • 性别: 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命令。

相关推荐

    mvn-repo-cleaner:通过删除旧的库版本来清理Maven本地.m2存储库的实用程序。 另外,使用可选开关清理快照,源,组,工件

    mvn-repo-cleaner -Maven资源库清理器是用于清理开发人员盒上本地.m2目录的实用程序。 随着新版本的从属库出现,旧的库已过时并且永远不会被清除。 该程序通过删除下载到.m2目录的旧版本库来帮助释放一些磁盘空间。...

    Urbancode Deploy User Guide

    ### Urbancode Deploy User Guide 关键知识点 #### 一、概述 - **产品文档与支持**:本指南旨在为用户提供关于 Urbancode Deploy(简称 uDeploy)的详细安装与配置指南,帮助用户快速上手并有效利用该平台进行部署...

    mvn-repo:我的个人 Maven 存储库

    "mvn-repo"这个术语通常指的是一个Maven仓库,它存储了各种依赖项,如JAR文件,供Maven项目在构建时引用。在这个场景中,"mvn-repo:我的个人 Maven 存储库"意味着创建者建立了一个私有的Maven仓库,用于存放自己的...

    mvn 常用命令手册mvn开发必备

    `mvn deploy:deploy-file` 用于将一个已存在的文件部署到远程仓库。这对于发布项目到私有仓库非常有用,可以指定文件的位置、版本、仓库URL等信息。 #### 15. `mvn install:install-file` 用于安装一个已存在的...

    how to deploy to remote.txt

    maven deploy the local file to a remote server. 1.config your pom.xml; 2.config your setting.xml; 3.execte cmd --- mvn deploy

    code-deploy-demo-repo

    #使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个maven应用程序,用于使用以下组件a来自动化构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...

    aws-code-deploy:Bash脚本,可通过AWS Code Deploy轻松部署应用程序。 设计用于与TravisCI,CircleCI和CodeShip等CI系统配合使用,并提供这些供应商的现成解决方案中未包含的功能

    **aws-code-deploy** 是一个基于Bash脚本的工具,专为简化通过AWS Code Deploy进行应用程序部署而设计。这个工具特别适用于集成到持续集成(CI)系统中,如Travis CI、CircleCI和CodeShip,它能弥补这些CI服务在与...

    maven deploy时报错的解决方法

    使用`mvn clean`清除旧的构建产物,然后执行`mvn deploy`。 6. **查阅Maven官方文档和社区资源**:如果你仍然遇到困难,Maven的官方文档和开发者社区,如Stack Overflow,通常会提供更多的解决方案和讨论。 理解并...

    yolov8系列--A repo that uses TensorRT to deploy wll-trained .zip

    yolov8系列--A repo that uses TensorRT to deploy wll-trained

    How To Deploy Kamailio

    How To Deploy Kamailio on Linux

    aws-code-deploy-demo

    使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个Maven应用程序,用于使用以下组件a来自动进行构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...

    sou4j-mvn-repo

    7. **构建流程**:在Maven中,开发者可以通过命令行执行如`mvn install`,将项目打包并安装到本地仓库,或`mvn deploy`将项目发布到远程仓库,供其他项目使用。 总的来说,"sou4j-mvn-repo"是一个与Maven仓库相关的...

    Mvn常用命令总结

    手动部署文件到远程仓库:`mvn deploy:deploy-file` 当需要手动部署文件到远程仓库时,可以使用该命令。例如: ``` mvn deploy:deploy-file -DgroupId=...

    mvn常用命令

    `mvn deploy:deploy-file`部署文件到Repository,例如: `mvn deploy:deploy-file -DgroupId=...

    mvn常用命令行

    Maven 的强大之处在于其插件机制,`mvn jetty:run` 可以直接将项目部署到 Jetty 服务器运行,`mvn deploy:deploy-file` 用于上传自定义的 JAR 文件到远程仓库。 总之,理解并熟练使用这些 Maven 命令行,将有助于你...

    deploy.hpi

    deploy.hpi文件

    Node.js-deploy-to-kube只需一个命令就能将node.js程序部署到Kubernetes无需配置

    标题中的"Node.js-deploy-to-kube"是一个工具或库,它简化了将Node.js应用程序部署到Kubernetes集群的过程。这个工具的目的是让开发者能够快速、便捷地将他们的Node.js应用推送到Kubernetes,而无需手动进行繁琐的...

    Python库 | django-code-deploy-0.9.65.tar.gz

    **Python库 Django Code Deploy 0.9.65 深度解析** 在软件开发领域,特别是后端开发,Python以其简洁的语法和强大的库支持备受青睐。Django作为Python的一个高级Web框架,极大地简化了Web应用的构建过程。本文将...

Global site tag (gtag.js) - Google Analytics