1

注意:很长的问题,所以本质上:我想知道如何通过 Maven 发布控制下的现有项目的神圣发布。我目前使用 sonatype 及其插件,但他们的发布插件不允许我将 SHA1 推送为发布。如果有现成的解决方案,我随时都会采用,只要你告诉我如何修改我的 pom.xml,链接如下

我有一个 Java 项目(在GitHub上可用并且已经在使用中),我在 Ubuntu 12.10、64 位上使用 Intellij IDEA 12.0.1(社区版)开发。安装的版本maven是我的发行版(3.0.4)捆绑的版本。

我遇到的问题在于pom.xml项目的:

https://raw.github.com/fge/json-schema-validator/master/pom.xml

我遵循了 SonaType 的发布指南。我已经设置了 GPG 等,一切正常。我可以使用他们的插件发布,我猜,这是由以下几行触发的pom.xml

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

但是,我对这个插件有几个问题(但真的是那个吗?):

  • 它会创建垃圾提交,总是以 为前缀[mvn-release-plugin],我不希望这样;
  • developerConnection它每次想要释放时都会从 URI 克隆,坦率地说,对于任何知道 git 如何工作的人来说都是愚蠢的(一个简单的fetchSHA1 比较可以检测到差异)——而且这种行为更令人讨厌,因为我的网络连接很差,委婉地说;
  • 它要求创建一个标签:我不想要那个,我可以自己创建它,非常感谢;
  • 它甚至不允许您自定义发布提交消息(我想在其中包含一个简短的日志)。

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

  1. 在 上创建一个标签HEAD,称为before
  2. git cherry-pick一个提交(我知道它的 SHA1),它将所有 git 存储库 URI 替换pom.xml为我的本地存储库,我根据需要进行同步;
  3. 在 shell 提示符下,让插件添加到它的内容中,以便该版本“普遍”可用:

    mvn release:clean
    mvn release:prepare
    mvn release:perform
    
  4. git rebase before:摆脱更改 git URI、挤压/改写等的提交,以便垃圾提交消失,并且发布消息包含更改的简短日志;

  5. 创建真实标签;
  6. 推送到github。

当然,这意味着我保证健全和健全的 Maven 版本与 Github 项目上等效版本的 SHA1 不匹配。我想摆脱这种差异。

那么,如何让 Sonatype 发布插件正常运行?也就是说,我如何告诉它:

  • 信任本地 git 存储库,而不是git cloneing from developerConnection
  • 不要创建无用的提交,
  • 让我自定义发布消息?

或者有没有更好的选择可以让我不经历这些繁琐的过程?

可按需提供详细信息。

4

1 回答 1

1

发布插件是“官方”的 maven-release-plugin,而不是特殊的 Sonatype 版本。 查看准备和执行目标的文档,尤其是localCheckout,pushChangessuppressCommitBeforeTag(尽管我不确定最后一个是否能满足您的需求)。

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

于 2013-01-18T10:27:02.813 回答