私はSpring Boot and Gradleプロジェクトを持っています。私はgradle.propertiesファイルにアプリのバージョンを定義して、Gradleがそれを読むことができる場所を決めました。私は@Value("${version}")
注入値として、このコードをアプリケーションコードに入れたいと思っています。ビルドディレクトリのSpringプロパティファイルを上書きする方法は?
バージョン番号をapplication.propertiesまたは別のversion.propertiesファイル(両方ともsrc/main/resourcesにあります)にコピーすることです。 実際には、プロパティファイルをプロパティ理想的には、これらのすべてのステップは、build dir($ buildDir/resources/main/version.properties)のファイルで実行されます。この変数をVCSに格納することはできません。残念なことに、ソースディレクトリにプロパティファイルを書き込むと機能しますが、ビルド時に編集しようとすると効果はありません。
あなたは私を助けますか?私の仕事はいつ実行されるべきですか?私は、Springがファイルを上書きするかもしれないと感じていますビルド中。
私のコードは次のとおりです。Gradleのビルドの
task appendVersionToApplicationProperties << {
// File versionPropsFile = new File("$buildDir/resources/main/version.properties")
versionPropsFile.withWriter { w ->
Properties p = new Properties()
versionPropsFile.withInputStream {
p.load(it)
}
p['app.version'] = appVersion // this is from gradle.properties
p.store w, null
}
}
build.finalizedBy(appendVersionToApplicationProperties)
出力:
$ gradle clean build
:clean
:compileJava
:compileGroovy UP-TO-DATE
:processResources
:appendVersionToApplicationProperties UP-TO-DATE
:classes
:findMainClass
:war
:bootRepackage
:assemble
:compileTestJava
:compileTestGroovy UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Total time: 27.16 secs
あなたの答えをありがとう!タスクはトリックを行い、私はそれを単独で実行してテストしました。しかし、私がgradle clean buildを実行すると、version.propertiesファイルはビルドディレクトリにありません。私はそれがタスクの1つによって上書きされると思う、私はちょうどどれが1つを把握できない。 –
@vargen_ attach gradleあなたの質問に、おそらくもう少しbuild.gradleファイルを出力してください – Strelok
ビルド出力を追加しました。私のbuild.gradleファイルは、基本的なSpring Bootと、ビルド時に実行されない2つのカスタムタスクです。どの部分が面白いでしょうか? –