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'
}
}