Maven:仅在存在命令行标志时执行插件

Rob*_* IV 4 plugins maven-2 command-line-arguments maven maven-antrun-plugin

我希望Maven在我调用mvn命令时在命令行上有标志时只运行某个插件.

例如:

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

所以,而不是说......

mvn install
Run Code Online (Sandbox Code Playgroud)

...我会说...

mvn install --foo
Run Code Online (Sandbox Code Playgroud)

第一个不应该使用/调用插件maven-foo-plugin,但第二个应该.默认情况下,我不希望这个插件运行,但是当且仅当--foo它存在时.是否有另外一个参数,我添加到这个,maven-foo-plugin以使它这样做?

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

Gab*_*ica 6

在maven中触发条件操作的正确方法是使用配置文件.您可以这样配置包含插件激活的特定配置文件,然后使用触发器执行

mvn targetPhase -P myprofile

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

Maven:使用基于配置文件的插件


nwi*_*ler 5

正如@Gab所提到的,使用Maven配置文件是可行的方法.创建配置文件并在配置文件中配置插件.然后在配置文件的activation部分中,引用环境变量,包含或不包含值:

<profiles>
  <profile>
    <activation>
      <property>
        <name>debug</name>
      </property>
    </activation>
    ...
  </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

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

mvn install -Ddebug
Run Code Online (Sandbox Code Playgroud)

请注意,您必须为环境变量添加前缀-D,以便将它们传递给运行Maven的JVM.

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