Maven 发布目标绑定
Posted
技术标签:
【中文标题】Maven 发布目标绑定【英文标题】:Maven release goals binding 【发布时间】:2013-03-03 11:08:02 【问题描述】:我想写一个 redmine 插件来更新一些项目发布时的版本。为了避免手动步骤,我想绑定到一些发布插件执行目标。通常,我需要在选择版本号时创建一个新版本,在选择新版本之前关闭以前的版本,等等......
现在,我知道发布阶段不是典型生命周期的一部分,但我怀疑它们可以像其他阶段一样“挂钩”(例如集成前测试或集成后测试) .
这是我尝试过的:
<execution>
<id>prepare-release-test</id>
<phase>maven-release-plugin:prepare</phase>
<goals>
<goal>list-issues</goal>
<goal>list-versions</goal>
<goal>list-users</goal>
<goal>list-projects</goal>
</goals>
<execution>
<id>prepare-test</id>
<phase>maven-release-plugin:2.0:prepare</phase>
<goals>
<goal>list-issues</goal>
<goal>list-versions</goal>
<goal>list-users</goal>
<goal>list-projects</goal>
</goals>
但这些都不起作用。当绑定到测试阶段时,它就可以正常工作了。
【问题讨论】:
prepare
是一个独立的聚合器目标(整个项目只执行一次),您不能将它“挂钩”到生命周期的任何阶段。您可能还需要考虑将您的插件目标声明为@aggregator
。
将其声明为聚合器有什么意义?我找到了发布插件的配置,允许在完成和准备时运行目标。也许这些就足够了。
抱歉,这里是链接:maven.apache.org/maven-release/maven-release-plugin/examples/…
【参考方案1】:
我知道发布阶段不是典型生命周期的一部分,但我怀疑它们可以像其他阶段一样被“挂钩”。
它们不是“阶段”。它们是“目标”,它们像阶段的唯一方式是您可以将它们的名称传递给 maven 执行。您不能像将目标绑定到阶段那样将目标绑定到其他目标。通常,您解决此问题的方法是定义一个您 activate manually or automatically 和 modifies the default lifecycle bindings 的配置文件。如果你想全力以赴,你也可以define your own lifecycle,但这似乎有点矫枉过正。但是,在发布插件的特定情况下,您还可以选择使用 preparationGoals
和 goals
属性来分别自定义在 release:prepare
和 release:perform
期间发生的事情。
【讨论】:
是的,我在发布问题后立即看到了发布细节挂钩。它解决了我的部分问题。现在第一个问题的代码实际上在配置文件中,我可以在激活时将其绑定到 test 之类的东西,我现在正试图为发布目标找到合适的激活代码。我认为配置文件激活过程更适合我的需求。 仅供参考,还有completionGoals maven.apache.org/maven-release/maven-release-plugin/…以上是关于Maven 发布目标绑定的主要内容,如果未能解决你的问题,请参考以下文章
Maven:将插件执行绑定到另一个插件的执行,而不是生命周期阶段
maven install 与install:install 的区别