首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle -从WAR文件夹中排除WAR?

Gradle -从WAR文件夹中排除WAR?
EN

Stack Overflow用户
提问于 2016-02-24 04:26:56
回答 2查看 1.5K关注 0票数 4

我需要从webapp war输出中排除两个.jar文件。build.gradle文件如下所示:

代码语言:javascript
复制
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被添加呢?

EN

回答 2

Stack Overflow用户

发布于 2016-02-24 23:58:12

这在过去对我很有效:

代码语言:javascript
复制
war {
    rootSpec.exclude("**/bad1.jar")
    rootSpec.exclude("**/bad2.jar")
}
票数 4
EN

Stack Overflow用户

发布于 2016-02-24 19:53:47

我不确定exclude是否支持lazy,但我会尝试一下:

代码语言:javascript
复制
excludes {['**/bad1.jar', '**/bad2.jar']}

你可以做的其他事情,我以前做过的就是只为你想要的文件设置from。

代码语言:javascript
复制
/**
 * 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
}

在你的战争任务中

代码语言:javascript
复制
from { getFiles(includePattern, excludePattern).files }

这将延迟获取与您的包含模式匹配的任何文件,并排除与您的排除模式不匹配的任何文件。此外,.files将平面化结果。如果这不是所需的,则将其删除。注意,这将搜索整个项目结构,将该集合: dir: project.getRootDir()更改为不同的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35587465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档