Java gradle-如何从war中排除WEB-INF/类

Java gradle-如何从war中排除WEB-INF/类,java,plugins,gradle,war,Java,Plugins,Gradle,War,我有一个相当简单的要求。我有以下项目布局: project/build.gradle --src/main/java --src/main/res 我想做的是为project/src/main/java 将此jar文件包括在war中,然后从war文件中排除WEB-INF/classes 我的build.gradle如下所示: 我尝试了各种方法来排除WEB-INF/classes,包括以下代码片段: 使用rootSpec.exclude: war { dependsOn jar

我有一个相当简单的要求。我有以下项目布局:

project/build.gradle
 --src/main/java
 --src/main/res
我想做的是为
project/src/main/java

将此jar文件包括在war中,然后从war文件中排除
WEB-INF/classes

我的
build.gradle
如下所示:
我尝试了各种方法来排除
WEB-INF/classes
,包括以下代码片段:

使用rootSpec.exclude

war {
    dependsOn jar
    archiveName = 'hello.war'
    classpath fileTree(dir:'build/libs/',include:'*.jar')
    classpath configurations.compile
    rootSpec.exclude ('WEB-INF/classes')
    ...
}
war {
    dependsOn jar
    archiveName = 'hello.war'
    classpath fileTree(dir:'build/libs/',include:'*.jar')
    classpath configurations.compile
    classpath fileTree(dir:'build/classes/', exclude:'*.class')
    ...
}
使用类路径:

war {
    dependsOn jar
    archiveName = 'hello.war'
    classpath fileTree(dir:'build/libs/',include:'*.jar')
    classpath configurations.compile
    rootSpec.exclude ('WEB-INF/classes')
    ...
}
war {
    dependsOn jar
    archiveName = 'hello.war'
    classpath fileTree(dir:'build/libs/',include:'*.jar')
    classpath configurations.compile
    classpath fileTree(dir:'build/classes/', exclude:'*.class')
    ...
}
使用from
('war')

执行直接“排除”:

war {
    dependsOn jar
    archiveName = 'hello.war'
    classpath fileTree(dir:'build/libs/',include:'*.jar')
    classpath configurations.compile
    exclude('WEB-INF/classes')
    ...
}
这些都是我在网上找到的建议,但似乎都不管用。知道我做错了什么吗

以下是我找到的一些文章和代码的链接:

gradle版本是2.12

这对我很有用:

war {
        dependsOn jar
        archiveName = 'hello.war'
        classpath = jar
    }

下面是对我有效的方法,但您仍然会在war包中看到一个(无害的)空包:

war {
    rootSpec.exclude('**/com/xxxxx/web/client/')
}

我查阅了相关文章,该代码有效:

  from 'src/main/webapp/WEB-INF/classes'
  exclude '**/*.class'

关于大规模的试错,你是对的。这对我很有用:

战争{


}

我成功地从WEB-INF中排除了classes文件夹

war{
  classpath = fileTree('*').exclude('**/classes')
}
这是我从

得到的,你可以试试这个

war {
    enabled = true
    classpath = classpath - sourceSets.main.output
    from (jar) {
        into 'WEB-INF/classes'
    }
}

请使用更多信息进行编辑。不鼓励只编写代码和“试试这个”答案,因为它们不包含可搜索的内容,也不解释为什么有人应该“试试这个”。我们在这里努力成为一个知识资源。它并没有回答“如何从战争中排除某些文件”的问题,对此也非常感兴趣。。。尝试了同样的方法,但没有任何效果。Gradle 3.1-RC1也有同样的问题,这对我也有效。。。放置
exclude'blabla'
rootSpec.exclude('blablabla')
之间有什么区别?
war{
  classpath = fileTree('*').exclude('**/classes')
}
war {
    enabled = true
    classpath = classpath - sourceSets.main.output
    from (jar) {
        into 'WEB-INF/classes'
    }
}