Gradle: исключить отдельные файлы ресурсов в сборке

Gradle 2.5

У меня есть несколько файлов комплектов ресурсов. Некоторые из них я хочу исключить из упакованного в jar-файле назначения, потому что они еще не содержат разрешенных переводов.

В соответствии с документацией и примерами, которые я нашел, у меня есть эта директива:

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

и утверждая, что эта директива правильно интерпретируется путем распечатки набора файлов основных ресурсов:

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

При запуске "сборки сборки gradle" печать из набора ресурсов действительно соответствует ожиданиям (исключенные файлы там не перечислены), но папка build/resource/ все еще содержит файлы и они также присутствуют в целевом фляге.,

Чего мне не хватает? Какая задача отвечает за копирование файлов ресурсов в каталог сборки, в зависимости от того, какой исходный набор?

1 ответ

Я нашел проблему: виновником была директива фильтра в processResources:

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'
    ...
Другие вопросы по тегам