序文
問題点:
Java開発の過程で、開発環境、テスト環境、正式な環境などのさまざまな環境に直面する必要があります。これらの環境には、プロジェクトに異なる要件があります。
この前に、対応する構成ファイルを手動で変更し、対応する環境に展開する前に戦争に入力する必要があることがよくあります。
ただし、これは簡単に問題を引き起こす可能性があります。なぜなら、それは変化を減らしたり見逃したりするのが簡単で、不必要なトラブルを引き起こすからです
ファンタジー:
戦争を入力して、対応する環境でプロジェクトを戦争に自動的にコンパイルするときにパラメーターを指定できるものがあった場合、それはどれほど幸せでしょう! ! !
結果:本当にそのようなことがあります、それはMaven-Profileです
開発プロセス中に、データソースのIP、ユーザー名、パスワード、URL、シークレットキーなど、さまざまな環境に従って異なるパラメーターを構成することがよくあります。従来の方法は、プロパティファイルのパラメーター値を変更するか、構成ファイルにコメントしてコメントすることです。これは、エラーが発生しやすいだけでなく、不必要な時間を無駄にします。さらに重要なことは、テスト環境または生産環境にコードを公開することは、変更を忘れがちです。この問題を解決するために、Mavenはプロファイルであるソリューションを提供します。
次の写真は伝統的な方法であり、往復コメントと説明が必要です
プロファイルで定義された場所
フィルターメソッドの実装
ステップ1:Application-dev.Properties、Application-Test.Properties、およびApplication-Pro.Propertiesの3つのファイルをそれぞれ定義します。
Application-dev.properties
env.jdbc.username = devenv.jdbc.password = 123456
Application-Test.Properties
env.jdbc.username = testenv.jdbc.password = 888888
Application-Pro.Properties
env.jdbc.username = rootenv.jdbc.password = 666666
ステップ2:Total Property File Application.Propertiesを定義し、このファイルの値はApplication- <Env> .Propertiesのキーを指します。
Application.Properties
//参照keyjdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}#public configuration Salt = 123456789ステップ3:プロファイルを構成します
<profiles> <profile> <! - 開発環境 - > <id> dev </id> <properties> <env> dev </env> </properties> <activation> < </properties> </profile> <profile> <! - 環境をリリース - > <id> pro </id> <env> pro </env> </properties> </profile> </profile> </profile> </profile> <profile> <! - > <id> pro </id> <properties> <env> pro </env> </properies> </properies> </properies> </properies> </properies> </properies>
ステップ4:フィルターとリソースを構成します
$ {env}はmvn package -P <env>の名前であり、アプリケーションに適用されたキーがプロパティファイルのキーであることがわかります。
<build> <finalName> profile-app </finalName> <! - 変数構成ファイルのアドレスを定義します - > <フィルター> <filter> src/main/resources/config/application-{env} .properties </filter> </filters> <resources> <resources> <resource> <directory> src/resources/resources </directory> </filterin <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </artifactid> </plugin> </plugins> </build>パッケージと実行
//環境が指定されていない場合、デフォルトはActiveByDefault = trueの環境です。現在、それは開発環境MVNパッケージを指します//パッケージで指定されている環境は-pパラメーターに渡されます。
MVN Packege -Pテストを実行した結果から、クラス/アプリケーションのjdbc.usernameとjdbc.password.perties生成されたターゲットディレクトリは、env.jdbc.username and env.jdbc.passwordの値であることがわかります。
春に属性構成ファイルを使用する場合は、この合計構成ファイルを直接導入するだけで、他の環境構成ファイルのミッションが終了しました。
<context:property-placeholder location="classpath:application.properties"/>
実装の原則:
pom.xmlの異なる環境ごとに異なるプロファイルを定義します。各プロファイルには環境名があります。次に、さまざまな環境( application-<env>.propertiesなど)の異なる構成ファイルを定義し、合計プロパティファイル(Application.Propertiesなど)を定義します。次に、application.propertiesの値をapplication-<env>.propertiesに参照し、パッケージング時にパッケージ化する環境の名前を指定します。このようにして、アプリケーションのキーの値。プロパティは、環境アプリケーションの対応する値 - <env> .propertiesです。
マルチリソースの実装方法
ステップ
ステップ1:SRC/メイン/リソースでENVディレクトリを作成し、各環境のサブディレクトリを作成し、各環境サブディレクトリの下にconfig.propertiesという名前のファイルを作成します。各キーは同じで、値は異なります。
env/dev/config.properties
jdbc.username = devjdbc.password = 123456
env/test/config.properties
jdbc.username = testjdbc.password = 888888
env/pro/config.properties
jdbc.username = rootjdbc.password = 666666
ステップ2:環境に依存しないApplication.Propertiesを作成します
Application.Properties
#パブリック構成塩= 123456789
ステップ3:プロファイルを構成します
<profiles> <profile> <! - 開発環境 - > <id> dev </id> <properties> <env> dev </env> </properties> <activation> < </properties> </profile> <profile> <! - 環境をリリース - > <id> pro </id> <env> pro </env> </properties> </properties> </profile> <profile> <! - リリース環境 - > <id> pro </id> <プロパティ> <env> pro </env> </</</</profiles> profiles> <
ステップ4:リソースを構成します
<build> <finalName> profile-app </finalName> <! - 変数構成ファイルのアドレスを定義します - > <リソース> <directory> <directory> src/main/resources </directory> <excludes> exclude> dev/*</explude> <exclude> env/test/explude> </resource> <resource> <directory> src/main/resources/env/$ {env} </directory> <include> <cludent>*。 <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </artifactid> </plugin> </plugin> </plugins> </build>ステップ5: mvn package -P testを実行します
mvn package -P <env>アイデアでMavenを構成できます。手順は次のとおりです。編集構成… - + - Maven ---各環境にMavenコマンドを追加します。将来的には、 mvn package -P <env>コマンドの実行と同等の実行構成をダブルクリックします。
2つの方法の比較
フィルターメソッドは、すべてのApplication-dev.properties、Application-test.properties、およびapplication-pro.propertiesファイルをパックし、この方法はプロパティファイルにのみ使用できます。他のファイル(.xmlなど)があり、異なる環境に応じて異なる構成がある場合、この方法は対処するのが困難です。
パッケージングの場合、マルチリソース法は、指定された環境の構成ファイルのみをパッケージ化します。さまざまなファイルをそれぞれの環境フォルダーに配置でき、フォルダー全体がパッケージング時にパッケージ化されます。この方法をお勧めします
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。