【问题标题】:Gradle not excluding specified fileGradle 不排除指定文件
【发布时间】:2018-01-09 13:28:01
【问题描述】:

我已经添加了 exclude 语句,但我的排除 abc/object/MyTestConfig*.class 仍然被添加到 jar 中,为什么?

jar {
  zip64 true

  from((configurations.compile - configurations.jarDepends).collect { it.isDirectory() ? it : zipTree(it) }) {
    exclude "META-INF/*.SF"
    exclude "META-INF/*.DSA"
    exclude "META-INF/*.RSA"
  }
  from ("$projectDir/src/main/java/") {
    include "**/*.hbm.xml", 
            "abc/tools/xml/XMLClasses.MF"
    exclude "abc/object/MyTestConfig*.class"
  }
}

task filterVersionConstants(type: Copy) {
  from "src/main/java/abc/"
  into "src/main/java/abc/"
  include "VersionConstants.tmpl"
  exclude "**/MyTestConfig*.class"
  rename { String fileName -> 
      fileName.replace('.tmpl', '.java')
}

【问题讨论】:

    标签: gradle build.gradle gradlew gradle-eclipse


    【解决方案1】:

    您正试图从源目录中排除一个类文件,但那里只有您的 Java(源)文件。您是否试图阻止构建类,或者只是不打包?排除 java 文件以防止它被构建,或者从输出目录而不是源目录中排除类文件。

    【讨论】:

    • 无论如何我希望这个类不应该成为这个 jar 的一部分
    【解决方案2】:

    经过几次反复试验,我终于可以从我的 jar 中排除这个文件,如下所示。基本上我首先需要在jar 任务中提取排除语句。

    jar {
      zip64 true
      exclude "abc/object/MyTestConfig*.class"
    
      from((configurations.compile - configurations.jarDepends).collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
      }
      from ("$projectDir/src/main/java/") {
        include "**/*.hbm.xml", 
                "abc/tools/xml/XMLClasses.MF"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2016-08-31
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      相关资源
      最近更新 更多