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'
...