Gradle:如何将JAR排除在WAR之外?

2022-09-02 05:13:19

我有一个多项目Gradle构建结构,其中子项目依赖于JAR,我不想在WAR文件中。我尝试“排除”,但它不起作用。

主项目脚本:

apply plugin: 'war'
war {
    dependencies {
        runtime (project(':childProject')) {
            exclude group: 'javax.servlet.jsp', module: 'jsp-api'
        }
    }
}

子项目脚本:

apply plugin: 'java'
dependencies {
    compile 'javax.servlet.jsp:jsp-api'
}

答案 1

我正在这样做。

war {   
    rootSpec.exclude("**/some-*.jar")
}

答案 2

来自 Gradle 文档

War 插件添加了两个依赖配置:provideCompile 和 provideRuntime。这些配置与各自的编译和运行时配置具有相同的作用域,只是它们未添加到 WAR 存档中。

因此,换句话说,提供的Compile或acfordRuntime添加一个条目将导致从war文件中排除该依赖项。

  • 如果您有依赖于某些类进行编译的源代码,请使用providedCompile
  • 如果您将其用于测试而不是编译,请使用。providedRuntime

http://www.gradle.org/docs/current/userguide/war_plugin.html

providedCompile "javax.servlet:servlet-api:2.5"


推荐