共计 1439 个字符,预计需要花费 4 分钟才能阅读完成。
多模块工程下,在父工程下执行的插件默认会在其所有的子模块上也执行一遍,大多数情况下这是合理的,比如像 compiler 这样的插件,但是有时候也种行为可能并不是开发人员所期望的,比如使用 exec 插件调用一个外部脚本或命令,一般来说开发人员只希望在父工程下 maven exec:exec 来执行一次该命令即可,但在多模块下,你会发现这个同样的命令被执行了多次,多出来的执行是在每个子模块上执行的,于是我们需要一种方法来禁用插件在子模块上的执行,一般来说两个方法:
一:查阅插件的文档,某些插件会主动提供禁用配置,以 exec 插件为例,如果子模块想禁用插件可以这样配置:
<!– Disable plugin exec running on sub-modules –>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
二:将指定的 execution(注意命令行执行的 exectuion 是 default-cli) 的 phase 设置为 none,其实这是有点 hack 的做法,目地是将这个 exection 绑定到一个不存在的 phase 上,这样它就永远不会被触发执行了。
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
另外,补充一点:对于你 exec 这样的插件,虽然插件被禁用了,但是 maven 的命令行还会输出 INFO 信息告知某某模块的 exec 被 skip 了,这些信息会干扰一个外部脚本或命令执行的输出,所以你可以在 maven exec:exec 的后面加上 - q 参数来 disable maven 的日志信息。
Maven 的详细介绍 :请点这里
Maven 的下载地址 :请点这里
相关阅读:
Maven 3.1.0 发布,项目构建工具 http://www.linuxidc.com/Linux/2013-07/87403.htm
Linux 安装 Maven http://www.linuxidc.com/Linux/2013-05/84489.htm
Maven3.0 配置和简单使用 http://www.linuxidc.com/Linux/2013-04/82939.htm
Ubuntu 下搭建 sun-jdk 和 Maven2 http://www.linuxidc.com/Linux/2012-12/76531.htm
Maven 使用入门 http://www.linuxidc.com/Linux/2012-11/74354.htm