背景
前段时间在整的BeanMapping,功能开发和单元测试已经基本完善,准备release一个新版本。花了点时间找了下,如何deploy到maven central(http://repo1.maven.org/maven2/),方别客户端使用。
在测试过程中,我先找了googlecode自己的svn做为mvn repo进行测试。后续迁移到mvn central repo也只是url和帐号的问题。
过程
我的工程: http://code.google.com/p/mapping4java/
对应的代码路径: http://mapping4java.googlecode.com/svn/
第一步
我选择googlecode svn做为mvn repo,所以需要预先创建svn目录。
svn mkdir https://mapping4java.googlecode.com/svn/maven-repo/snapshots -m "create repo"
svn mkdir https://mapping4java.googlecode.com/svn/maven-repo/releases -m "create repo"
注意:
- 使用的svn url需要以https打头,http为只读不可进行svn提交。
第二步
配置pom.xml,设置repo目录
<distributionManagement>
<repository>
<id>googlecode-repo-releases</id>
<name>Maven Repository Releases</name>
<url>svn:https://mapping4java.googlecode.com/svn/maven-repo/releases</url>
<uniqueVersion>false</uniqueVersion>
</repository>
<snapshotRepository>
<id>googlecode-repo-snapshots</id>
<name>Maven Repository Snapshots</name>
<url>svn:https://mapping4java.googlecode.com/svn/maven-repo/snapshots</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
注意:
- 定义repository/snapshotRepository,分别指定url为第一步创建的releases/snapshots目录
- 注意对应的url为 svn:https://,表明使用svn协议进行提交
- 注意这里的id设置,需要和后续的第三步相对应
第三步
配置settings.xml,设置repo的帐号密码
<servers>
<server>
<id>googlecode-repo-releases</id>
<username>username</username>
<password>password</password>
</server>
<server>
<id>googlecode-repo-snapshots</id>
<username>username</username>
<password>password</password>
</server>
<servers>
注意:
- 对应server.id需要和第二步设置的id相对应
第四步
开始deploy代码,运行: mvn deploy
结果:
其他
针对第二步和第三步,可以使用deploy:deploy-file进行替换
mvn deploy:deploy-file -Durl=file://C:\m2-repo \
-DrepositoryId=some.id \
-Dfile=your-artifact-1.0.jar \
[-DpomFile=your-pom.xml] \
[-DgroupId=org.some.group] \
[-DartifactId=your-artifact] \
[-Dversion=1.0] \
[-Dpackaging=jar] \
[-Dclassifier=test] \
[-DgeneratePom=true] \
[-DgeneratePom.description="My Project Description"] \
[-DrepositoryLayout=legacy] \
[-DuniqueVersion=false]
运行的命令:
mvn deploy:deploy-file -Dfile="C:\Documents and Settings\Administrator\.m2\repository\com\googlecode\mapping\mapping\1.0-SNAPSHOT\mapping-1.0-SNAPSHOT.jar"
-Durl="svn:https://mapping4java.googlecode.com/svn/maven-repo/snapshots"
-DrepositoryId=repo-snapshots
-DgroupId=com.googlecode.mapping
-DartifactId=mapping
-DpomFile=pom.xml
-Dpackaging=jar -Dversion=1.0-SNAPSHOT
注意:
- -Durl的值和第二步保持一致
相关资料
- http://maven.apache.org/plugins/maven-deploy-plugin/usage.html
- http://stackoverflow.com/questions/1280470/maven-repository-for-google-code-project
- http://www.thewebsemantic.com/2009/04/11/your-very-own-google-code-maven-repo/
如何提交mvn central repo?
1. 参考资料:
里面建议使用Sonatype OSS Repository做为mvn repo,由sonatype会定时同步到mvn central repo。
具体的配置过程:
基本照着这个文档,很快你就可以deploy你的工程到mvn central repo了。整个过程和前面提到的几步操作类似
相关url :
2. googlecode工程(
http://code.google.com/p/google-maven-repository/)
提供了一个解决方案,所有的deploy到它的svn repo目录,再由它做为sonatype的一个jira,进行同步。相关讨论:
http://code.google.com/p/support/issues/detail?id=1226