Gradle-从War中排除依赖项并创建已排除依赖项的zip文件

Gradle-从War中排除依赖项并创建已排除依赖项的zip文件,gradle,Gradle,我有一个应用程序,它有很多依赖性,我想减少战争足迹。我想排除这些依赖项并创建一个依赖项的.zip文件,我还想知道将此zip文件放置在何处,以便在部署到tomcat时可以正确拾取它。您可以在配置中声明依赖项,以便它们不会打包到war中 dependencies { compileOnly 'a:a:1.0' compileOnly 'b:b:2.0' } 然后您可以从compileOnly配置中创建一个uber jar task uberJar(type: Jar) {

我有一个应用程序,它有很多依赖性,我想减少战争足迹。我想排除这些依赖项并创建一个依赖项的.zip文件,我还想知道将此zip文件放置在何处,以便在部署到tomcat时可以正确拾取它。

您可以在配置中声明依赖项,以便它们不会打包到war中

dependencies {
    compileOnly 'a:a:1.0'
    compileOnly 'b:b:2.0'
}
然后您可以从
compileOnly
配置中创建一个uber jar

task uberJar(type: Jar) {
    configurations.compileOnly.files.each { File jar ->
        from zipTree(jar)
    }
    classifier = 'uber'
}
artifacts {
    archives uberJar
}

然后您可以将uber jar复制到
%TOMCAT_HOME%/lib

它排除了依赖项,但没有限制gradle在war文件中打包依赖项,我会让它正常工作。这是重新包装的问题。我知道可以创建war,但jar文件嵌入了不同版本的tomcat。当我将jar放入$tomcat/libs文件夹
java.lang.NoSuchMethodError:org.apache.tomcat.util.buf.B2CConverter.(Ljava/lang/String;Z)时,会出现V
。如何排除嵌入tomcat?为什么编译时依赖项中需要tomcat?我能想到的唯一原因就是测试。在这种情况下,应该在
testCompile
testRuntime
配置中声明tomcat依赖项