2016-12-12 13 views
0

私は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 

答えて

0

あなたがこれを行うことができます:

task appendVersionToApplicationProperties { 
    // write your properties 
    // this is just basic groovy code 
    Properties props = new Properties() 
    props.put('app.version', appVersion) // get it from wherever 
    def file = new File("$buildDir/resources/main/version.properties") 
    file.createNewFile() 
    props.store(file.newWriter(), null) 
} 

// this will run your task after the java compilation and resource processing 
processResources.finalizedBy appendVersionToApplicationProperties 
+0

あなたの答えをありがとう!タスクはトリックを行い、私はそれを単独で実行してテストしました。しかし、私がgradle clean buildを実行すると、version.propertiesファイルはビルドディレクトリにありません。私はそれがタスクの1つによって上書きされると思う、私はちょうどどれが1つを把握できない。 –

+0

@vargen_ attach gradleあなたの質問に、おそらくもう少しbuild.gradleファイルを出力してください – Strelok

+0

ビルド出力を追加しました。私のbuild.gradleファイルは、基本的なSpring Bootと、ビルド時に実行されない2つのカスタムタスクです。どの部分が面白いでしょうか? –

関連する問題