Maven插件;使用一个输出作为另一个的输入

时间:2012-04-22 10:28:18

标签: java maven

我的问题是我编写了一个maven插件来将工件部署到用户指定的位置。我现在正在尝试编写另一个maven插件来使用这个已部署的工件,更改一些东西并再次压缩它。 我想编写第二个插件,以便我使用第一个插件获取部署位置的信息。 我不知道如何从第一个插件中访问此信息。

2 个答案:

答案 0 :(得分:1)

我同意@Barend的意见,如果您能够在部署之前进行更改,那么这可能是最好的策略。

如果你不能这样做,你可以遵循像Maven Release插件这样的插件的策略。 Maven发布插件分两个阶段运行,第二次运行需要输出第一次运行。他们通过在项目目录中保存临时属性文件来管理它,该文件目录中包含标签名称,SNAPSHOT版本名称等信息。

您可以使用与插件相同的方法。请记住,您的插件将是一种事务性的,它希望其他目标在它可以完成工作之前运行。

答案 1 :(得分:0)

在我看来,最简单的解决方法是颠倒插件的运行顺序。

首先运行插件B,使用target/下的已知位置修改工件,然后运行插件A,将修改后的工件部署到配置的位置。

如果没有选择,我建议您只复制配置值(以便两个插件都被告知其<configuration>元素中的新位置)。这使得两个插件保持独立,这就是Maven所认为的那样。

最后一个选项是make make Plugin B解析整个POM并从插件A的<configuration>元素中提取信息,但我真的不推荐这个。如果你这样走,这两个插件是如此紧密地交织在一起,它们只是一个插件。这是一个糟糕的设计,违反了最不惊讶的原则,并可能导致令人讨厌的配置问题。