注意:很长的问题,所以本质上:我想知道如何通过 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 如何工作的人来说都是愚蠢的(一个简单的fetch
SHA1 比较可以检测到差异)——而且这种行为更令人讨厌,因为我的网络连接很差,委婉地说;- 它要求创建一个标签:我不想要那个,我可以自己创建它,非常感谢;
- 它甚至不允许您自定义发布提交消息(我想在其中包含一个简短的日志)。
因此,当我准备好发布时,我会执行以下步骤:
- 在 上创建一个标签
HEAD
,称为before
git cherry-pick
一个提交(我知道它的 SHA1),它将所有 git 存储库 URI 替换pom.xml
为我的本地存储库,我根据需要进行同步;在 shell 提示符下,让插件添加到它的内容中,以便该版本“普遍”可用:
mvn release:clean mvn release:prepare mvn release:perform
git rebase before
:摆脱更改 git URI、挤压/改写等的提交,以便垃圾提交消失,并且发布消息包含更改的简短日志;- 创建真实标签;
- 推送到github。
当然,这意味着我保证健全和健全的 Maven 版本与 Github 项目上等效版本的 SHA1 不匹配。我想摆脱这种差异。
那么,如何让 Sonatype 发布插件正常运行?也就是说,我如何告诉它:
- 信任本地 git 存储库,而不是
git clone
ing fromdeveloperConnection
, - 不要创建无用的提交,
- 让我自定义发布消息?
或者有没有更好的选择可以让我不经历这些繁琐的过程?
可按需提供详细信息。