4

WAR プラグイン タスクのリソース ファイルを Gradle に置き換えようとしています。

基本的に、2 つのリソース ファイルがあります。

database.properties
database.properties.production

私が達成したいのは、 WEB-INF/classes の下の最終的なWARファイルで「 database.properties」「database.properties.production」に置き換えることです。

私は多くのことを試しましたが、私にとって最も論理的だったのは次のことでした。

    war {
        webInf {
            from ('src/main/resources') {
                exclude 'database.properties'
                rename('database.properties.production', 'database.properties')
                into 'classes'
            }
        }
    }

ただし、これにより、重複した database.properties (同じ名前の 2 つの異なるファイル) を含め、他のすべてのリソース ファイルが重複し、database.properties.production は WAR 内にあります。

重複がなく、WAR に database.properties.production がないクリーンなソリューションが必要です。

4

2 に答える 2

1

複数のアーカイブ タスクで機能するソリューションが必要な場合は、processResources タスクの実行後に "build/resources/main" のプロパティ ファイルを変更できます。これが受け入れられた慣習であるかどうかはわかりません。build フォルダーから生成される jar と par の 2 つのアーカイブ タスクを使用するので、これでうまくいきました。

また、次のソリューションでは、「.production」で終わるすべてのファイルを使用します。

このソリューションをGradle 1.11でテストしました

classes << {
    FileTree tree = fileTree(dir: "build/resources/main").include("*.production")
    tree.each { File file ->
        String origName = file.name.substring(0, file.name.length() - ".production".length())
        File orig = new File(file.getParent(), origName)
        orig.delete()
        file.renameTo(orig)
    }
}
于 2014-09-13T01:56:02.890 に答える