0

摇篮 2.5

我有几个资源包文件。其中一些我想从打包到目标 jar 文件中排除,因为它们不包含尚未授权的翻译。

根据文档和示例,我发现我有这个指令:

sourceSets {
   main {
        resources {
            exclude 'mail/mailtext_it.properties'
        }
    }
}

并通过打印出主要资源的文件集来断言该指令被正确解释:

processResources 
{
    afterEvaluate 
    {
        println "resource files (in processResources): " + sourceSets['main'].resources.getFiles()
    }
}

运行“gradle clean assembly”时,资源集的打印结果确实是我所期望的(排除的文件未在此处列出),但 build/resource/ 文件夹仍然包含文件,并且它们也存在于目标 jar 中.

我错过了什么?哪个任务负责根据哪个源集将资源文件复制到构建目录?

4

1 回答 1

0

我发现了问题:processResources 中的 filter 指令是罪魁祸首:

processResources 
{
    // Note: narrow the file set to be filtered. Otherwise gradle would change the jks file
    // when copying to output folder !!!
    from('src/main/resources') {
        include '**/*.properties'
        filter ( org.apache.tools.ant.filters.ReplaceTokens, 
             tokens: [
                        "filtervar.walletservice.productVersion": project.property("filtervar.walletservice.productVersion"),
                     ]  
            )    
    }
}

显然 from(...) 子句覆盖了 sourceSets 定义的定义。我原以为它会是累积的。

我通过定义 from(..) 来解决它,例如:

from( sourceSets['main'].resources ) {
    include '**/*.properties'
    ...
于 2015-10-28T12:45:01.943 回答