19

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 プロファイルでアクティブにすることはできますか?
ただし、これは重複ではありません。私のアプローチが機能していないことがわかり、その理由を理解したいと思います。(リファレンスを読みましたが、明らかな何かを見落としている可能性があります)。

4

2 に答える 2

24

この機能は単に存在しません。プロパティアクティベーターは、プロファイルによって設定されたものではなく、入力されたプロパティを使用します (それ以外の場合は、より複雑なロジックがないと、それらをアクティブにする順序がわからないため)。

あなたが使用したソリューションは、一緒にやりたいことを活性化するための同一のプロパティを持っており、最良のソリューションです. 常に満足できるとは限らないことを理解しています.その場合、できることは、個々のプロファイルをできるだけ単純にして、コマンドラインで必要な方法でそれらを組み合わせることができるようにすることです。

この機能に関する問題: https://issues.apache.org/jira/browse/MNG-3309
プロパティのアクティブ化に関する問題: https://issues.apache.org/jira/browse/MNG-2276

于 2010-02-11T23:24:20.170 に答える