2017-08-07 8 views
0

実行可能なスプリングブートジャーがあります。いくつかの環境変数は、SPRING_PROFILES_ACTIVEを含む実行時アカウントの.bashrcによって提供されます。これは、実行時にいくつかのシステムパラメータをチェックすることによって設定されます。Springブートカスタム埋め込みlaunch.scriptの中にSPRING_PROFILES_ACTIVEを設定する

本当に移植可能なアプリケーションを有効にするために、これらの変数をどこかにデプロイされるカスタム.bashrcに依存するのではなく、Springブート実行可能ファイル起動スクリプト(launch.script)のカスタムバージョン内に設定したいと考えています。

つまり、起動スクリプトは現在bashrcにあるカスタムシェルコードを実行します。

カスタム.bashrcをデプロイすることなく、私たちの箱の1つにSpring Boot実行可能なjarをスローすることができました。

デフォルトのSpringブートlaunch.scriptをコピーし、環境変数の先頭に追加しました。 spring-boot-maven-pluginを使用して、デフォルトスクリプトをカスタムスクリプトに置き換えます。 echo文を使用すると、新しいlaunch.scriptがデフォルトのものに置き換わることがわかります。

動的に設定する1つの環境変数はSPRING_PROFILES_ACTIVEです。エコーステートメントを通して、変数が私たちのカスタムlaunch.scriptの中で正しく設定されていることを知っています。ただし、その値はアプリケーションに伝播されていません。つまり、アプリケーション起動時のバネプロファイルは、L0、L1、または設定しようとしているものとは異なり、常に「デフォルト」です。

私はexportを使用して変数をエクスポートし、-xを宣言しました。

実行していることはすべて実行可能か、launch.scriptのSPRING_PROFILES_ACTIVEを設定するのが遅すぎますか?

+0

の同じディレクトリにmy.scriptを作成して、あなたは 'JAVA_OPTS'に渡す試してみましたし、 '-Dspring.profiles.active = myProfile'を使用していますか? –

+0

現在、いくつかのホスト固有のファイルを処理して、アクティブなプロファイルを決定しています。現在は.bashrcでこれを行います。したがって、コマンドラインでspring.profiles.activeを設定する必要はありません。しかし、私たちの目標は、ファイル処理シェルコードを独自のlaunch.scriptに埋め込み、.bashrcファイルに組み込むことです。 – JRB

答えて

0

スナップショットバージョン(2.0.0.M7)には新しいproperty substitution named inlinedConfScriptがあります。この機能を使用して、アプリケーションの起動前にいくつかの環境変数を設定できます。 pom.xml

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <executable>true</executable> 
       <embeddedLaunchScriptProperties> 
        <inlinedConfScript>${project.basedir}/my.script</inlinedConfScript> 
       </embeddedLaunchScriptProperties> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 


<build>設定は、プロジェクトのpom.xml

export SPRING_PROFILES_ACTIVE=production 
関連する問題