Mojo从发布插件执行

时间:2016-06-09 19:26:06

标签: maven maven-release-plugin mojo

我想编写一个mojo,其职责是根据一组规则验证POM(除了Maven指定的那些规则)。作为一个例子,它将确保有一个organization元素,并且它填充了公司的详细信息。

这个插件会将validate阶段定义为默认阶段,并且它会进入公司的父pom,以便在任何构建时执行。

问题是应该为快照和发布版本应用不同的规则集。

现在,maven release插件在完成操作后(即clean verify之后)执行release:prepare。所以,我的插件将在此时执行。凉。

问题是,因为它在发布上下文中,所以我需要应用发布规则集。但我不能说它是在发布环境中;我不知道是谁/什么触发了它 - “常规”构建,或者release:prepare的“子流程”。没有任何迹象......

一种解决方案可能是填充preparationGoals,例如clean verify -DisRelease=true,其中isRelease是插件查询的参数,以便应用正确的规则集。< / p>

但我不喜欢这个主意;感觉就像一个黑客,太脆弱......

所以问题是:

有没有办法告诉插件执行的上下文是什么,以便我可以从发布中告诉快照?有没有办法将配置绑定到一个目标,而不是一个阶段(如在发布中它不是一个阶段,而是一个release:prepare目标)?还有其他方法可以达到这个目的吗?

提前致谢,

------------------编辑--------------------

由于一些误解,我给出了一个可能的例子:

假设版本的组织理念是格式:{number}.{number}.P-{number},无论出于何种原因。

因此,在“常规”构建中,将检查版本是否采用{number}.{number}.P-{number}-SNAPSHOT格式,如果发布,则会检查其格式为{number}.{number}.P-{number}

POM从带有-SNAPSHOT的版本开始,而在CI中,它会通过验证。然后,开发人员想要发布它。因此执行release:prepare,切断-SNAPSHOT。然后,由于preparationGoals的默认值为clean install,验证规则将在被操纵的 POM上执行(其中版本没有-SNAPSHOT)。它会失败,因为它(错误地)期望版本与-SNAPSHOT一致。

那么如何发出信号呢,应该执行“释放”验证?

再次感谢

0 个答案:

没有答案