2016-04-25 7 views
2

私たちのアプリは、Mavenプロジェクトファイルから動的に取得するプロパティを持っています。EclipseからIntelliJに切り替えた後、Springブートプロパティの展開が機能しない

info: 
    build: 
    artifact: @[email protected] 
    name: @[email protected] 
    description: @[email protected] 
    version: @[email protected] 

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-application-info-automatic-expansion-maven

我々は、Eclipseにこれらを使用していた問題ではありませんでしたが、私はそれらの動的な性質のために、いくつかのハードコードされた値を提供しない限り、今InelliJに移動するにはアプリが起動しません。

:私は @が、これは

編集のIntelliJでEclipseで働いていませんでしたかだけでわからない、有効なYAMLの文字ではないことを認識

19:47:20.962 [main] INFO com.edlogics.ElrcApplication - Spring Boot configuration: profiles = [local, chris] 
19:47:20.968 [main] INFO com.edlogics.ElrcApplication - Spring Boot configuration: properties = {} 
Exception in thread "main" while scanning for the next token 
found character '@' that cannot start any token. (Do not use @ for indentation) 
in 'reader', line 74, column 11: 
     name: @[email protected] 
      ^

org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:420) 
org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:226) 
org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586) 
org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) 
org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143) 
org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:132) 
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:229) 
org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) 
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:229) 
org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) 
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:229) 
org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) 
org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122) 
... 

Process finished with exit code 1 

は、私はこのエラーを取得します

私が最初の質問から脱したことの1つは、マルチモジュールプロジェクトがあることです。

 <resources> 
     <resource> 
      <directory>${basedir}/src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/application.yml</include> 
       <include>**/application.properties</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>${basedir}/src/main/resources</directory> 
      <excludes> 
       <exclude>**/application.yml</exclude> 
       <exclude>**/application.properties</exclude> 
      </excludes> 
     </resource> 
    </resources> 

そして、我々のプロジェクトには、フィルタリングを必要としているサブモジュールである:それはこれを持っている春・ブート・スターター・親から継承するプロジェクトのルートポンポンです。 application.ymlファイルはサブモジュールの正しい場所にあり、Eclipseはそれがサブモジュールであることに気づいていないようです。私は、EclipseとIntelliJが多モジュールプロジェクトを少し違って扱っていることを知っています(Eclipseは、IntelliJが階層構造であるのに対し、Eclipseはフラットな構造です)。

+0

Mavenメカニズムを使用してリソースをフィルタリングしているようだが、Eclipseはビルド中に構成を使用してMavenプラグインを実行し、IntelliJはそうではない。私はIntelliJにどのように言わせるかは分かりませんが、探したいキーワードが少なくともあります。 – dunni

+0

https://www.jetbrains.com/help/idea/2016.1/maven.html?origin=old_help#compileによると、それはそのままで動作するはずです。多分あなたはカスタムフォルダレイアウトを持っていますか?あなたのpom.xmlとフォルダ構造を表示できますか? – dunni

+0

はまったく関係ありませんが、良いニュースは[あなたは1.4でそれをする必要はありません](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production- ready-application-info-build)を参照してください。それは私のために働くと言っているので、あなたのプロジェクトの設定に特有のものがあるかもしれません。 –

答えて

2

リソースフィルタリングがIntelliJで機能していたことが分かります。 1つのプロパティ、正しくフィルタリングされていなかった4つのうち@[email protected]がありました。何とか、これはEclipseでは問題ではありませんでした。そこで、私たちはapplication.ymlからそのプロパティを削除しました。

関連する問題