2012-04-22 95 views
2

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

+0

在哪种类型的插件是特别与maven-deploy-plugin等比较的。那么为此编写一个maven-plugin的原因是什么?为什么你重新发明轮子,导致像maven-assembly-plugin这样的插件已经存在?.. – khmarbaise 2012-04-22 11:52:09

回答

0

我同意@Barend,如果你有能力在部署之前做出改变,那可能是最好的策略。

如果你不能这样做,你可以按照像Maven Release插件这样的插件策略。 Maven发布插件分两个阶段运行,第二个运行需要输出第一个运行。他们通过保持临时性质携带像标签名称的信息项目目录中的文件进行管理,快照版本命名等

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

0

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

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

如果这没有选择,我建议你只需复制配置值(以便两个插件被告知有关<configuration>元素中的新位置)。这使得两个插件都是独立的,Maven认为它们是独立的。

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

相关问题