我需要从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")
}项目"farms“包含jars "bad1.jar”和"bad2.jar“。但在输出战争中,我不需要它们。我尝试添加的排除块没有任何效果。
我怎样才能阻止那些jars被添加呢?
发布于 2016-02-24 23:58:12
这在过去对我很有效:
war {
rootSpec.exclude("**/bad1.jar")
rootSpec.exclude("**/bad2.jar")
}发布于 2016-02-24 19:53:47
我不确定exclude是否支持lazy,但我会尝试一下:
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 }这将延迟获取与您的包含模式匹配的任何文件,并排除与您的排除模式不匹配的任何文件。此外,.files将平面化结果。如果这不是所需的,则将其删除。注意,这将搜索整个项目结构,将该集合: dir: project.getRootDir()更改为不同的内容。
https://stackoverflow.com/questions/35587465
复制相似问题