1

これが私のシナリオです:

  • Maven 2.0.9 はビルドシステムです
  • 複数の環境にコードをインストールします
  • 環境固有のプロパティはすべて、環境ごとに 1 つのプロパティ ファイルに含まれています。
    • 現在、 properties-maven-pluginを使用してこれらのプロパティを maven に読み込みます。このサブブレットは要件ではなく、現在のソリューションです

ゴール:

  • 特定の環境に対してのみ、ビルドの特定の部分 (つまり、プラグインの実行) を実行します。
  • 環境固有のプロパティ ファイルに値を設定して、実行するパーツを制御する

私がこれまでに試したこと:

  • Maven では、プロパティによってアクティブ化できる pom プロファイル内にプラグインの実行を配置できます。残念ながら、これらはシステムプロパティである必要があります。によってロードされたプロパティからではなく、settings.xml またはコマンドラインからproperties-maven-plugin

可能であれば、次のようなビルド ワークスペース内にすべてをカプセル化したいと考えています。

project
    pom.xml
    src
       ...
    conf
       dev.properties
       test.properties
       prod.properties
    build-scripts
       build.groovy <-- the script that wraps maven to do the build
       install.groovy <-- ... wraps maven to do the install

ビルドの実行は次のようになります。

cd build-scripts
./build.groovy
./install.groovy -e prod

私たちが使用しているバージョンのmavenでこれらの目標を達成する方法はありますか? そうでない場合、新しいバージョンのmavenで可能ですか?

4

1 に答える 1

2

これは、Mavenだけでは不可能です。(Mavenプロパティを使用してプロファイルをアクティブ化する方法も参照してください。 )その理由は、プロファイルが、有効なPOMを決定するために何よりも先に評価されるためです

私の提案は、Mavenを起動する前に、環境固有のプロパティファイルを解析し、それらを必要なシステムプロパティに変換するプリプロセッサを作成することです。このスクリプトをに含めると、~/.mavenrcMavenが起動する前に自動的に実行されます。プロパティファイルが固定された場所にあることを前提としたスクリプトの例を次に示します。

properties=`cat /etc/build-env.properties`
while read line; do
   MAVEN_OPTS="$MAVEN_OPTS -D$line"
done <<< "$properties"

プロパティファイルが修正されていない場合は、スクリプトに何かを追加して場所を検出する必要があります(検出可能であると想定)。

于 2013-01-17T19:08:19.440 に答える