跳过maven-war-plugin的执行

时间:2019-05-14 00:36:09

标签: maven-war-plugin

如何在执行mvn命令时跳过执行maven-war-plugin?

基于json,看来我应该可以通过使用 -Dmaven.war.skip = true 运行以下内容来做到这一点:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        try {
            MyRequiredService mrs = new MyRequiredService();
            mrs.connect(); // This will throw if it fails
            run(MyApplication.class, args);
        } catch(MyException e) {
            System.out.println("Failed to connect to MyRequiredService!");
        }
    }
}

但是当我这样做时,仍然会执行maven-war-plugin。

同样奇怪的是,当我从pom完全删除maven-war-plugin时,它仍然被执行。这让我想知道为什么maven-war-plugin会被执行,因为我的pom.xml中没有提到它。

所以也许更好的问题是:如果我没有将maven-war-plugin列为插件,是什么将其引入项目中?

2 个答案:

答案 0 :(得分:0)

事实证明,删除我的pom包装以战争(<!--<packaging>war</packaging>-->)可以防止执行maven-war-plugin。而是执行maven-jar-plugin。那不是我真正想要的(我只想通过mvn verify运行集成测试而不会花费太长时间。但是它至少运行得更快。

答案 1 :(得分:0)

您需要覆盖 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 中的阶段绑定。

阅读链接: