2016-10-13 7 views
0

私はマルチモジュールのGradleアプリケーションを持っていて、gradle.propertiesで定義したプロパティを/src/main/resourcesフォルダのすべてのサブプロジェクトのapplication.propertiesに追加します。application.propertiesリソースにGradleプロパティを追加

私が今までに何度も試したことは、subprojectsセクションにprocessResourcesプラグインを追加することです。

例として
subprojects { 

    processResources { 
     expand(project.properties) 
    } 
// ... 

、私はgradle.propertiesファイルに次のプロパティを定義しました:

appVersion='0.0.1-SNAPSHOT' 

は今、私はそれがapplication.propertiesに存在するようにしたいので、hereを述べたように、私はプレースホルダを追加しました。だから、私のapplication.propertiesは、次のようになります。後で

app.version=${appVersion} 

を、私は例えば、Springを使用して、それを使用したいと思います:プロジェクトが作成された後

@Value("${app.version}") 

ただし、プロパティは、置き換えられません私はapplication.propertiesにバージョン値がなく、まだ${appVersion}のプレースホルダです。どのようにそれを行うための任意の提案?

答えて

0

問題がGradle構成ではありませんでしたが、私のSpring Bootアプリケーションが起動する方法。私はよく私のためにうまくいかなかったIntellij IDEAから直接main()メソッドを実行していた、おそらくいくつかのタスクが正しく実行されていませんでした。

解決策は、./gradlew bootRunコマンドを実行することです。この方法でプロパティが正しく置き換えられています。

1

別々の目的のために別々のフォルダを用意することを強く感じています。したがって、application.propertiessrc/main/filteredResourcesに移動することをお勧めします。その後:

import org.apache.tools.ant.filters.ReplaceTokens 

processResources { 
    with copySpec { 
     from 'src/main/filteredResources' 
     filter(ReplaceTokens, tokens: project.properties) 
    } 
} 
+0

アドバイスをいただきありがとうございます。私がアドバイスしたとおり、リソースを分けることがあります。しかし、問題は私のアプリケーションを実行していた方法で、私はすでに私自身の質問に答えています。 –

+0

'FileCollection'全体で' expand() 'を使うのは悪い考えです。遅くなり、バイナリ(画像など)も破損する可能性があります –

+0

ありがとう、私はこれをapplication.propertiesファイルのみに変更します。 –

関連する問題