2011-09-12 6 views
6

私は、他のプロジェクトが環境に応じてjarを使用する必要があるmavenにマルチモジュールプロジェクトを持っています。Maven if-elseのような動作

我々は、すなわちDEV(4 enviroenments 1.Dev 2.UAT 3.QA 3種類の環境すべてのプロジェクト名-dev.jarを使用したいプロジェクトがあり 4.PROD

のように持っていますua、QA)とPRODのprojectname-prod.jarです。

私はmavenプロファイルで使用できるif-elseロジックのようなものをgoogle検索しました。

私はまだこの特定のプロジェクトの新しいプロパティを作成し、プロダクトに入ると '-prod'に変更できますが、追加したくないオーバーヘッドがあります。

これに使用できるプラグインがありますが、手動オーバーヘッドを追加せずに上記の作業を行うのに役立ちます。

おかげ

+3

私は開発時にのみmavenを実行します。私はMavenを使ってリリースを行い、そのリリースでは** UAT、QA、PRODで**そのまま使用します**。環境間に設定の違いがある場合は、これらを別々に管理します。 –

+0

ここで問題となるのは、開発に専念する3つのチーム、それぞれuatおよびqaがある組織で、1人の人間に依存してビルドを作成するということです。 :) – Neeraj

+1

私は、継続的なインテグレーションサーバーを持っています。あなたが持っている問題は、UATとQAがDEVとまったく同じではないが何かを構築できるということです。そして、もう一度別のものを生産に投入してください。 –

答えて

7

が行うことを意図しているものMaven profilesことはありませんか?異なるプロファイルで異なるプロパティ値を定義し、ビルドを実行するときにそれらのいずれかをアクティブにすることができます。

+0

新しいプロファイルを作成するのではなく、という新しいプロパティを作成し、-Denv = 'myenv'を使用してビルドするときにプロパティをmavenに渡します。これは理想的な環境とエントリビューション固有のビルドがどのように行われるかです作成する。 – Neeraj

+0

私はあなたに@Neerajに同意しません。 axtavtはプロファイルの使用を推薦するのに非常に正しいです。プロファイルでは、そのタイプのビルドに特有のプロパティをいくつでも指定できます。コマンドラインで各プロパティを定義する方がはるかに柔軟である –

0

あなたが探しているものではありませんが、環境固有の成果物を構築すべきではありません。一般的な意見とは異なり、これはMavenプロファイルのひどい悪用です。どの環境にも適したアーティファクトを1つ作成する必要があります。アーティファクトの外部にあるアーティファクトの構成は、各環境に固有のものです。

+0

はい私は完全にあなたに同意します.4つの異なるプロファイルを作成するよりも、成果物は各環境の構成を持つ必要があります。 – Neeraj

+0

次に、さまざまな環境を対象としたMavenビルドを条件付きで実行する方法を探しているように聞こえるため、あなたが求めていることを理解できないかもしれません。おそらく、あなたはartifactをビルドし、[assembly plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)を使用して複数の異なる環境設定と共にアーティファクトをバンドルするようなことをする必要がありますzipファイルに変換します。 –

+0

db configをwarファイルに格納するのは非常に一般的です。あなたはどのようにdev環境変数を設定しますか? –

関連する問題