【问题标题】:conditionally execute maven plugins有条件地执行maven插件
【发布时间】:2020-04-14 06:34:28
【问题描述】:

我在 pom.xml 中配置了一些 Maven 插件。我只想在测试正在运行时执行这些插件(可以使用-Dmaven.test.skip=true-DskipTests 跳过测试)。

其中一个插件绑定到process-classes 构建生命周期阶段,另一个绑定到pre-integration-test 阶段。

【问题讨论】:

  • 我有类似的情况,我想有一个插件 (tomcat7-maven-plugin) 可用于本地开发,但未在 CI 构建中引用(TeamCity,仅使用来自 Artifactory 存储库的已批准工件)。我按照@tenshi 的建议添加了profile 元素和id=localhost-server,但排除了activation 元素。然后我在我的settings.xml 中添加了一个activeProfile 元素,这样它就只会在我的本地环境中处于活动状态。
  • 请看我的帖子,里面有详细的例子。 stackoverflow.com/questions/7513319/…

标签: java maven-2


【解决方案1】:

您可以使用具有特殊激活条件的配置文件,如下所示:

<project>
  ...
  <profiles>
    <profile>
      <id>my-test-plugins</id>

      <activation>
        <property><name>!maven.test.skip</name></property>
        <property><name>!skipTests</name></property>
      </activation>
      <build>
        <plugins>

      <!-- define your plugins here -->

        </plugins>
      </build>
    </profile>
  </profiles>
</project>

您可以在这里找到更多信息:

http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html

【讨论】:

  • 感谢 Maven 书的链接。真正有助于了解超出此处所问/回答的内容。
  • 如何在不使用配置文件的情况下使用 IF 条件,因为它们不适合我?基本上,我为整个项目设置了一组配置文件。对于一个子模块,我需要根据当前配置文件为 aspect-j 插件选择配置。我怎么能用建议的模型做到这一点,不确定......
  • 这真的有效吗?看起来您在 中只能有一个 元素。
  • 如果只有 1 个配置文件需要插件,这很好,但如果我需要在 2 个不同的配置文件中运行相同的插件并且我不想复制代码怎么办?
  • 似乎这回答了如何有条件地激活配置文件。但这不是最初的问题。最初的问题是如何有条件地激活插件(配置文件中的插件之一,而不是全部)
【解决方案2】:

最后一个示例仅在我设置值时才有效:

<property>
  <name>wsdl2java</name>
  <value>true</value>
</property>

【讨论】:

  • 不是原始问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2018-10-17
  • 2020-06-03
相关资源
最近更新 更多