【问题标题】:Maven: Only execute plugin when a command line flag is presentMaven:仅在存在命令行标志时执行插件
【发布时间】:2013-03-09 14:29:18
【问题描述】:

当我调用mvn 命令时,我希望 Maven 仅在命令行上有标志时运行某个插件。

例如:

假设我有一个名为maven-foo-plugin 的插件。当我调用 maven 命令时,我只希望 maven 在出现 --foo 标志时运行这个插件。

所以,与其说...

mvn install

...我会说...

mvn install --foo

第一个不应该使用/调用插件maven-foo-plugin,但第二个应该。默认情况下,我不希望此插件运行,但当且仅当 --foo 存在时。是否有我添加到此maven-foo-plugin 的另一个参数来使其执行此操作?

我使用的插件是maven-antrun-plugin,它具有解压缩文件的任务。当然,有时该文件存在,有时不存在。有时,它不存在,我也不需要它。所以,我需要一种方法(最好通过命令行,除非有人有更好的主意)来打开/关闭这个插件。

【问题讨论】:

    标签: maven plugins maven-2 command-line-arguments maven-antrun-plugin


    【解决方案1】:

    正如@Gab 所提到的,使用 Maven 配置文件是要走的路。创建一个配置文件并在配置文件中配置您的插件。然后在配置文件的 activation 部分中,引用环境变量,有或没有值:

    <profiles>
      <profile>
        <activation>
          <property>
            <name>debug</name>
          </property>
        </activation>
        ...
      </profile>
    </profiles>
    

    如果您在调用 Maven 时定义 debug 变量,上述示例将激活配置文件:

    mvn install -Ddebug
    

    请注意,您必须在环境变量前面加上 -D 才能将它们传递给运行 Maven 的 JVM。

    更多详情可以在这里找到:http://maven.apache.org/guides/introduction/introduction-to-profiles.html

    【讨论】:

    • 在该配置文件中,您可以运行两个插件吗?一个接一个?
    • 是的,您可以在配置文件中拥有任意数量的插件。每个配置文件都有一个 build/plugins 部分,您可以在其中列出插件,就像您在主构建中所做的那样。
    • 如果我在一个配置文件中确实有两个插件,我该如何说首先运行哪个插件?
    • 每个插件执行都绑定到一个阶段,一些插件默认绑定到一个阶段,例如jar 插件,其他没有。您可以使用阶段标签来指定插件何时执行。有关阶段的更多详细信息,请参见此处:maven.apache.org/guides/introduction/…
    【解决方案2】:

    在maven中触发条件动作的正确方法是使用profile。 您可以配置包括插件激活在内的特定配置文件,然后您将使用

    触发执行

    mvn targetPhase -P myprofile

    (您也可以指定特定的属性值来激活配置文件)

    Maven: Using a Plugin Based On Profile

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多