2017-03-12 19 views
1

私はapplication.propertiesファイルを持っています。私は別のapplication.propertiesファイルを使用することができるようにするためには、選択したプロファイルに依存します。これを行う方法を私に教えてもらえますか?mavenのプロファイル - ビルドするファイルの選択は、mavenのプロファイルに依存します

上記は私の考えです。多分あなたは何か良いことを知っていますか?私はjdbc接続をchosingの問題を意味します。つまり、プロファイルによっては、さまざまなjdbc URLを選択できるようになりたいということです。 src/main/resources-devsrc/main/resources-prod:あなたは2つのディレクトリを作成する必要があります

<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <!-- This profile will be default in your IDE --> 
      <activeByDefault>true</activeByDefault> 
     </activation> 

     <build> 
      <resources> 
       <resource> 
        <directory>src/main/resources-dev</directory> 
       </resource> 
      </resources> 
     </build> 
    </profile> 

    <profile> 
     <id>prod</id> 

     <build> 
      <resources> 
       <resource> 
        <directory>src/main/resources-prod</directory> 
       </resource> 
      </resources> 
     </build> 
    </profile> 
</profiles> 

:よう

答えて

0

何か。技術的にはこれは非常に簡単です、あなたがすることができますがmvn clean install -Pprod

+0

これは2つのほとんど同じ 'application.prpoerties'ファイルを意味しますか? –

+0

@ JavaNewbie本当に重複がある場合は、フィルタリングで 'application.properties'を使うことができます:https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html – ZhekaKozlov

+0

私に例を教えてもらえますか?そのようなフィルタリングのここで、してください? –

0

mvn clean install

コマンド ビルドにprodプロファイルを持つ:次に、各ディレクトリに対応するapplication.propertiesを置く:devプロファイルを構築するための

src 
    main 
     java 
     ... 
    resources-dev 
     application.properties 
    resources-prod 
     application.properties 

コマンド@ ZhekaKozlovの答えを参照してください、これは非常に悪い考えです。 DBへのパスワードが変更された場合、アプリケーション自体が変更されるべきですか?いいえ - アプリは同じままで、変化するアプリの設定です。

Mavenプロファイルを使用すると、環境ごとに新しいバイナリを作成することになります。これは、各設定オプションの新しいアプリケーションを効果的に意味します。あなたがバイナリの中にすべての設定ファイルを配置し、スタートアップ(-Denv=prd)の間にそれらの間で選択することができます許可された場合は

  • :ので、代わりにこれを行うのあなたは、2つのオプションを選択することができます。しかし、プロパティーが変更された場合でも、新しいバイナリを構築する必要があります。
  • バイナリから構成を外部化することをお勧めします。起動時に、プロパティファイルの場所を指定します:-Dconf=/etc/appname/application.properties

連続配信のゴールデンルールは、一度どこでも実行できます。いずれかのenvからバイナリをダウンロードし、別のプロパティのセットを使用してローカルで実行できるはずです。

+0

セキュリティホールになることがあります。開発ビルドには、実動サーバー上にあってはならない機密ファイルを含めることができます。また、デスクトップアプリケーションを忘れた場合、エンドユーザーが開発者モードで実行する可能性は不適切です。 – ZhekaKozlov

+0

私はあなたのポイントを理解していない..それはあなたが私を理解していないように見えます:)私はconfigsがバイナリの_outside_に配置されるべきだと言っています。それらは、配備スクリプトによってサーバー_に配備する必要があります。まったく同じデプロイメントスクリプトもバイナリをダウンロードします。 –

関連する問題