我需要从webapp war输出中排除两个.jar文件。 build.gradle文件如下所示:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'
dependencies {
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.30'
compile 'javax.servlet:servlet-api:2.5'
compile project(':farms')
}
war {
exclude("**/bad1.jar")
exclude("**/bad2.jar")
}
项目"农场"是什么包括罐子" bad1.jar"和" bad2.jar"。在输出战中,我不需要它们。我尝试添加的排除块无效。
如何阻止这些罐子被添加?
答案 0 :(得分:3)
过去这对我有用:
war {
rootSpec.exclude("**/bad1.jar")
rootSpec.exclude("**/bad2.jar")
}
答案 1 :(得分:0)
我不确定排除是否支持懒惰,但我会尝试这样做:
excludes {['**/bad1.jar', '**/bad2.jar']}
我以前做过的其他事情就是将from设置为只有你想要的文件。
/**
* Get a FileTree using a String array of includePatterns and String array of excludePatterns
* @return FileTree
*/
ext.getFiles = {List includePattern=null, List excludePattern=null ->
FileTree fileTree = project.fileTree(dir: project.getRootDir())
if (includePattern) {
includePattern.each {
fileTree.include(it)
}
}
if (excludePattern) {
excludePattern.each {
fileTree.exclude(it)
}
}
return fileTree
}
在你的战争任务中
from { getFiles(includePattern, excludePattern).files }
这将懒得获取与您的includePattern匹配的所有文件,并排除任何与您的excludePattern不匹配的文件。此外,.files将使结果变平。如果不需要,则将其删除。请注意,这将搜索整个项目结构,将该组:dir:project.getRootDir()更改为不同的内容。