2016-10-02 30 views
2

開発中にGradle経由で起動するSpringブートアプリケーションに、特定の機密保護プロパティを渡したいと思っています。コマンドラインおよび/または外部システムプロパティを設定します。 build.gradleスクリプトやプロパティファイルのようなものに書き込むことはできません。なぜなら、それらはソース管理にコミットされ、公開されるからです。システムプロパティをGradleからSpringブートに渡す

これらの値をアプリケーションで使用できるようにしたソリューションのいずれも取得できません。GradleはGradle 2.4.4を使用して動作するように実行されます。

bootRun { 
    systemProperties System.properties 
} 

これは完全にデフォルトbootRunのタスクを上書きするために表示され、春ブーツの自動メインクラス検出を破る:

いくつかのソリューションは、システムプロパティはbootRunタスクに設定されている場合、このように見えます。

bootRun { 
    run {systemProperties System.properties} 
} 

これは、通常の設定を上書きしませんが、実行クロージャ内で設定されたプロパティは、bootRunタスクの内部は使用できません。

どこか他にこれが示唆されました。

これはすべてIntellijを使用してGradleを起動したときに発生します。

私は、コマンドラインからのGradleを開始し、例えば、プロパティのように渡そうとする場合:

gradle -Dspring.email.password=123 bootRun 

プロパティは、構成に関係なく、どこにも設定されることはありません。引数の順序を変更しても効果はありません。

答えて

1

のGradleプロパティとしてJVMの引数を渡すと、次の設定を使用してアプリケーションに転送:JVMARGSを適用する

bootRun { 
    if (project.hasProperty('jvmArgs')) { 
     jvmArgs project.jvmArgs.split('\\s+') 
    } 
} 

は実行します。./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"

関連する問題