注意:很长的问题,所以实质上:我希望知道如何通过maven在我的控件下释放现有项目的神圣版本。我现在使用sonatype及其插件,但是他们的发布插件只是让我把SHA1作为一个版本推出。如果存在现成的解决方案,我会在任何时候采用它们,前提是您告诉我如何修改我的pom.xml,链接在下面
我有一个Java项目(可在GitHub上使用并且已经在使用中),我在Ubuntu 12.10,64bit上使用Intellij IDEA 12.0.1(社区版)开发。已安装的maven
版本是我的发行版(3.0.4)捆绑的版本。
我遇到的问题在于项目的pom.xml
:
https://raw.github.com/fge/json-schema-validator/master/pom.xml
我跟着SonaType's release guide。我已经设置了GPG等,一切正常。我可以使用他们的插件发布,我推测,它是由pom.xml
中的以下行触发的:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
但是,我对这个插件有几个问题(但它真的是那个吗?):
[mvn-release-plugin]
为前缀,我不想要那个; developerConnection
URI中克隆,对于任何知道git如何工作的人来说都是愚蠢的(简单的fetch
和SHA1比较可以检测到差异) - 和这个行为让我的网络连接变得更加烦人,说得温和一点; 因此,当我准备好发布时,我会完成以下步骤:
HEAD
上创建一个名为before
git cherry-pick
一个提交(我知道它的SHA1),它在pom.xml
中将所有git存储库URI替换为我的本地存储库,我根据需要进行同步; 在shell提示符下,让插件获取其内容,以便释放可用&#34;在大型&#34;:
mvn release:clean
mvn release:prepare
mvn release:perform
git rebase before
:摆脱改变git URI,squash / reword等的提交,以便垃圾提交消失,而发布消息包含一小段更改;
当然,这意味着我保证声音和理智的Maven版本与Github项目上的等效版本的SHA1不匹配。而且我想摆脱这种差异。
那么,我如何让Sonatype版本插件运行?也就是说,我该如何告诉它:
git clone
,{/ li> developerConnection
还是有更好的选择让我不会经历这个繁琐的过程吗?
按要求提供详细信息。
答案 0 :(得分:1)
发布插件是“官方”maven-release-plugin,而不是特殊的Sonatype版本。
Check out the docs用于准备和执行目标,尤其是localCheckout
,pushChanges
和suppressCommitBeforeTag
(虽然我不确定最后一个会做你需要的)。
如果您通过更改为发布版本并添加标记来手动准备项目,您甚至可以省略release:prepare
并仅运行release:perform -DlocalCheckout=true
,(理论上;)将从您的标记并将这些工件推送到OSSRH。