如何在MVN命令中跳过Maven-War-Plugin的执行?
基于文档,似乎我应该能够通过运行以下内容,使用 dmaven.war.skip = true :
mvn verify -P integration-test -Dmaven.war.skip=true
但是,当我这样做时,Maven-War-Plugin仍然被执行。
也很奇怪的是,当我从我的pom中完全删除毛ven-war-plugin时,它仍然被执行。这让我想知道为什么Maven-War-Plugin根本无法执行,因为我在pom.xml中没有提到的那样。
所以也许一个更好的问题是:如果我没有将其列为插件,将Maven-War-Plugin带入了项目?
事实证明,将我的POM的包装删除到战争(<!--<packaging>war</packaging>-->
(可以防止Maven-War-Plugin执行。Maven-Jar-Plugin改为执行。这并不是我想要的(我只想通过mvn verify
进行集成测试而不需要太长时间(。但至少运行更快。
您必须覆盖默认的战争执行。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
说明
默认情况下, war 目标与文档中所述的 package lifecylcle相结合。
因此,我们使用 skip 配置在POM中覆盖软件包执行。
您需要覆盖Maven War插件的执行配置:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>target/stampli-output/</webappDirectory>
</configuration>
<executions combine.children="override">
</executions>
</plugin>
应该做。
为什么这些说明?
每个POM都有一些标准默认值类似于Super-Pom。
如果您不覆盖这些默认值,这些默认值将与您的配置合并。
因此,也将合并执行,将插件目标与MVN中的阶段结合。
链接到读:
- https://maven.apache.org/ref/3.0.4/maven-model-builder/super-pom.html
- https://maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html
- https://maven.apache.org/pom.html#build-它在
combine.children
上有信息 - https://maven.apache.org/guides/mini/guide-configuring-plugins.html