【问题标题】:Gradle - exclude jars from WAR folder?Gradle - 从 WAR 文件夹中排除 jars?
【发布时间】:2016-02-23 20:26:55
【问题描述】:

我需要从我的 webapp 战争输出中排除两个 .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”包括罐子“bad1.jar”和“bad2.jar”。虽然在输出战中我不需要它们。我尝试添加的排除块无效。

如何阻止添加这些 jar?

【问题讨论】:

    标签: gradle war


    【解决方案1】:

    这在过去对我有用:

    war {
        rootSpec.exclude("**/bad1.jar")
        rootSpec.exclude("**/bad2.jar")
    }
    

    【讨论】:

      【解决方案2】:

      我不确定 exclude 是否支持惰性,但我会试试这个:

      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() 为不同的内容。

      【讨论】:

        猜你喜欢
        • 2016-06-17
        • 1970-01-01
        • 2016-08-25
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 2010-11-05
        • 2017-08-17
        相关资源
        最近更新 更多