3

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

4

2 回答 2

1

我同意@Barend 的观点,如果您有能力在部署之前进行更改,那可能是最好的策略。

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

您可以对插件使用相同的方法。请记住,您的插件将是一种事务性的,它期望另一个目标在它可以完成工作之前已经运行。

于 2012-04-22T13:44:38.390 回答
0

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

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

如果这不是选项,我建议您简单地复制配置值(以便两个插件都被告知其<configuration>元素中的新位置)。这使两个插件保持独立,这是 Maven 假设的。

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

于 2012-04-22T11:00:07.493 回答