在使用git时获取SonaType的发布插件。还是更好的选择?

时间:2013-01-08 02:08:49

标签: java git maven maven-3 sonatype

注意:很长的问题,所以实质上:我希望知道如何通过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比较可以检测到差异) - 和这个行为让我的网络连接变得更加烦人,说得温和一点;
  • 它要求创建一个标签:我不想要它,我可以自己创建它,非常感谢你;
  • 它甚至不会让你自定义发布提交消息(我想在那里包含一个短信)。

因此,当我准备好发布时,我会完成以下步骤:

  1. HEAD上创建一个名为before
  2. 的标记
  3. git cherry-pick一个提交(我知道它的SHA1),它在pom.xml中将所有git存储库URI替换为我的本地存储库,我根据需要进行同步;
  4. 在shell提示符下,让插件获取其内容,以便释放可用&#34;在大型&#34;:

    mvn release:clean
    mvn release:prepare
    mvn release:perform
    
  5. git rebase before:摆脱改变git URI,squash / reword等的提交,以便垃圾提交消失,而发布消息包含一小段更改;

  6. 创建真实标签;
  7. 推送到github。
  8. 当然,这意味着我保证声音和理智的Maven版本与Github项目上的等效版本的SHA1不匹配。而且我想摆脱这种差异。

    那么,我如何让Sonatype版本插件运行?也就是说,我该如何告诉它:

    • 信任本地git存储库,而不是git clone,{/ li> developerConnection
    • 不创建无用的提交,
    • 让我自定义发布消息吗?

    还是有更好的选择让我不会经历这个繁琐的过程吗?

    按要求提供详细信息。

1 个答案:

答案 0 :(得分:1)

发布插件是“官方”maven-release-plugin,而不是特殊的Sonatype版本。 Check out the docs用于准备和执行目标,尤其是localCheckoutpushChangessuppressCommitBeforeTag(虽然我不确定最后一个会做你需要的)。

如果您通过更改为发布版本并添加标记来手动准备项目,您甚至可以省略release:prepare并仅运行release:perform -DlocalCheckout=true,(理论上;)将从您的标记并将这些工件推送到OSSRH。