2017-10-23 15 views
0

Google Pub Sub APIを使用したSpringブートアプリケーションがあります。ファイルcredentials.jsonを使用してGoogleの認証情報やその他のプロパティを注入する必要があります。しかしプロパティファイル内のリソースからのスプリングブート参照ファイルの場所

spring.cloud.gcp.credentials.location=file:src/main/resources/credentials.json 

を、私はjarファイルをビルドするとき、このファイルは、ルートディレクトリと、この経路に配置されています。私はこのように(そうでない場合は、それが構築されたjarファイル内のファイルを入れていないだろう)私のsrc/main/resourcesにファイルを置きますもう有効ではありません。その時、ファイルはまだ私のresourcesディレクトリにありますが、パスはsuckentlyちょうどfile:credentials.jsonなので、ビルド後にスタンドアロンのjarとして実行することはできませんから、私はEclipseから自分のアプリケーションを実行することができます。

パスを相対パスとして指定する簡単な方法はありますか?それはIDEとJARの両方で動作しますか?私はenvを通してパスを注入できます。私は絶対に必要な場合にのみそうします。

答えて

2

接頭辞classpathを使用すると、Springはクラスファイル内のファイルを検索します。

あなたはsrc/main/resourcesにファイルを置く場合は、Mavenは、デフォルトでは、あなたのクラスパスのルートにコピーし、次のように、それはその後のアドレス指定可能になります。

spring.cloud.gcp.credentials.location=classpath:credentials.json 

これは、かどうか当てはまる必要があります...

  • IDEで実行しています。 IDEのMavenインテグレーションはファイルをsrc/main/resourcesからクラスパスのルートにコピーします。通常はtarget/classes
  • ビルドされたJARを実行しています。 Mavenはそのファイルをsrc/main/resourcesからJARのルートにコピーします
+0

システムプロパティexを使ってパスを定義することもできます。 -Dmy.credentials.path =/my/nice/path/credentials.jsonにアクセスしてそこにアクセスしてください。最後に、プロファイルを使用できます。 –

+0

ありがとうございます。ちょうど私が必要なもの! – Smajl

関連する問題