2012-03-19 52 views
0

我们想用mvn release:prepare来发布我们的版本。但是,我们也构建了一个依赖项,并且都构建了使用SNAPSHOTs。如何将两个Maven目标链接到另一个之前执行?

Maven的版本,插件可以帮助我们解决这个问题,所以我们的构建过程是:

mvn versions:update-properties 
mvn versions:update-parent 
svn ci 
mvn release:prepare 

我看着我们如何可以链接这些结合在一起,我发现最简单的方法是写一个自定义生命周期插件:http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html

请任何人都可以做得更好?在这样复杂的层面上,我宁愿只记录三条线。

的多金属氧酸盐是很漫长的,希望这有助于:

Parent (has a version) 
|- ParentFather 
|- ParentMother 

Main (parent is Parent, has a version, contains property Child.version) 
|- MainBrother (depends on MainSon and ParentFather) 
|- MainSister 
|- MainDaughter (has version Child.version) 
|- MainSon (has version Child.version) 

所以释放主,这是我的最终目标,我需要释放父,儿子,和女儿。完成之后,我需要更新Main以使用这些版本。

+0

可以给出您正在使用该项目的pom的摘录吗? mvn版本:update-parent对我来说似乎有点奇怪...通常在多模块中构建一个mvn版本:prepare release:perform就够了... – khmarbaise 2012-03-19 17:55:48

+0

@khmarbaise,你可能是对的,m-release -p会为我们做更新父项,但我不认为它会设法更新Child.version属性。如果确实如此,那将解决问题! – lxs 2012-03-20 12:00:58

+0

是否与家长处于同一水平?如果是,那么您需要首先释放父结构,并且可以通过使用mvn发布周期(可能需要在Main中更新父项)才能释放主结构。但是根据你的描述,听起来像Main必须是Parent下的一个子级别正确吗? – khmarbaise 2012-03-20 15:13:11

回答

1

如果你想自动化它,一个简单的脚本也可以帮助。你甚至可以添加一些评估返回值,以确保上一步没有失败。

您是否使用配置文件查看了该顺序执行步骤?您可以将versions插件步骤绑定到项目的早期阶段,然后跟随SVN提交(使用SCM插件)和发行版。

+0

脚本是一个选项,但它会影响构建的可移植性,并且存在着“仅仅一个命令”的诱惑。一个配置文件可能是可能的,它感觉有点冒险,但我会研究它。 – lxs 2012-03-19 16:19:02

相关问题