跳过执行Maven-War-Plugin



如何在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

最新更新