Web アプリケーションを構築するマルチモジュール Maven2 プロジェクトがあります。アプリケーションは、バックエンド サーバーと DB に接続されます。私たちの環境にはいくつかのサーバー インスタンスがデプロイされており、開発、UAT、本番などのために複数のバックエンドと DB インスタンスもあります。したがって、実際には、各アプリケーション構成には次の 3 つの座標が必要です。
- フロントエンド サーバー
- バックエンド サーバー
- DB
アプリケーション構成の統合と自動化に取り組んでいます。これらのさまざまな構成を Maven のプロファイルとして表現するのは簡単で明白です。次に、各グループから 1 つのプロファイルを有効にすることで、特定の構成を作成できます。
mvn -Pserver.Server1,backend.prod,db.uat clean install
これは入力するのが少し面倒で、エラーが発生しやすいです。特定のサーバーが間違った DB に接続するように誤って構成されている場合、価格が高くなる可能性があります。これを修正する明白な方法の 1 つは、有用なプロファイルの組み合わせをすべてスクリプト ファイルに入れることです。
しかし、必要なバックエンドと DB プロファイルをサーバー プロファイルから直接アクティブ化することで、それよりも賢くなることができると考えました。サーバープロファイルはメインの pom にあります。
<profile>
<id>server.myserver</id>
<properties>
<jboss.home>D:\Programs\jboss-4.2.1.GA</jboss.home>
<server.name>NightlyBuild</server.name>
<hosttobind>192.168.1.100</hosttobind>
<servlet.port>8080</servlet.port>
...
<db>dev02</db>
</properties>
</profile>
バックエンドと DB プロファイルは、Config サブモジュールの pom にあります。
<profile>
<id>db.dev02</id>
<activation>
<property>
<name>db</name>
<value>dev02</value>
</property>
</activation>
<properties>
<jdbc.address>jdbc:oracle:thin:@192.168.0.101:1521:dbdev02</jdbc.address>
</properties>
</profile>
したがって、理論的には、server.myserver
プロファイルはdb
プロパティをに設定するため、これは子 pom でプロファイルdev02
のアクティブ化をトリガーする必要があります。db.dev02
ただし、これは起こりません。(また、2 つのプロファイルが同じ pom にある場合も同様です)。コマンドラインからプロパティを設定すると
mvn -Ddb=dev02 help:active-profiles
ただし、プロファイルはアクティブ化されるため、スペルミスはないようです。
私は何かを見落としましたか?これを機能させる他の方法はありますか?
同様の質問が存在することがわかりました。1 つの Maven プロファイルを別の Maven プロファイルでアクティブにすることはできますか?
ただし、これは重複ではありません。私のアプローチが機能していないことがわかり、その理由を理解したいと思います。(リファレンスを読みましたが、明らかな何かを見落としている可能性があります)。