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 のフィルター ディレクティブが原因でした:

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 に答える