2017-09-15 7 views
0

現在、構築ツールとしてgradleを使用してKotlinSpring Bootサービスを構築中です。私は、自動的に私のapplication.propertiesファイルで検出されたプロパティを拡張しようとここに見つけるの手順を使用しています:kotlin/springブートでのGradleプロパティ展開の使用

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-automatic-expansion-gradle

次のように私のバージョンは以下のとおりです。

- kotlin: 1.1.4-3 
- spring boot: 1.5.6.RELEASE 
- gradle: 3.5.1 

私は./gradlew bootRunを実行すると、私が手次のエラー:

java.lang.IllegalArgumentException: Could not resolve placeholder 'myServiceName' in value "${myServiceName}" 

が続く:

java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.boot[email protected]510aeb93: startup date [Fri Sep 15 10:59:51 AEST 2017]; parent: org.spring[email protected]68edf5bb 

build.gradle:

apply plugin: 'kotlin' 
apply plugin: 'kotlin-spring' 
apply plugin: 'org.springframework.boot' 

processResources { 
    filesMatching('application.properties') { 
     expand(project.properties) 
    } 
} 

gradle.properties:

myServiceName=potato-service 

application.properties:

info.app.name=${myServiceName} 

これらのエラーは、アプリケーションの起動後に表示され、Springはプロパティファイルを読み込もうとしています。

興味深いのは、私がapplication.propertiesに代入しようとしている変数をmyServiceName123に変更すると、gradleがprocessResourcesステージで失敗するということです。 addResourcesフラグは無視されますtrueに設定した

bootRun { 
    addResources = true 
} 

Spring Boot Docsによると:

答えて

0

だから、私は私はそれについて知らなかったとして上に含まれていなかった私のbuild.gradleの小さな部分がありましたprocessResourcesステップで作成されたapplication.propertiesファイルを使用し、代わりにプロジェクトソースにあるものを使用します。これは、アプリケーションを再起動することなくファイルを動的に変更できるようにするためです。

bootRun { 
    addResources = false 
} 

そうでない場合は、あなたのjarファイルを構築するときにあなただけのtrueとして、このフラグを残して、拡張が必要な​​場合:(​​タスクを実行するときに変数展開が必要な場合)

このため、正しい修正が設定することですうまくいくはずです。

関連する問題