2012-09-07 5 views
9

W私のmavenプロジェクトでは、異なる分類子を使って3つの成果物を同時に生成します。私はモジュールなどでそれを作ることができることを知っています。これは実際にDEV、STAGE、PROD環境用の設定を作成するリソースプロジェクトです。異なる分類子で複数の成果物を同時に構築する

私が持っておきたいのは、を一度実行して、my.group:resources:1.0:dev,とmy.group:resources:1.0:prodをレポに入れておくことです。

+0

ないだまされやすい人が、*非常に*似たような状況:http://stackoverflow.com/questions/3866784/release-different-configurations-with-mavenパッケージで – chrisinmtown

答えて

11

これは、複数のプラグインの実行を指定するとプロファイルなしで実行でき、resource filteringです。

${basedir}/src/main/filters(たとえば、prod.properties、dev.properties)の各バージョンのプロパティファイルを作成し、各環境に適切な値を設定します。あなたのリソースのためのフィルタリングに

入れます:

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

今すぐ実行をプラグインのリソースを追加します。異なるフィルタファイルと出力ディレクトリに注意してください。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>default-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.outputDirectory}/dev</outputDirectory> 
     <filters> 
      <filter>${basedir}/src/main/filters/dev.properties</filter> 
     </filters> 
     </configuration> 
    </execution> 
    <execution> 
     <id>prod</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.outputDirectory}/prod</outputDirectory> 
     <filters> 
      <filter>${basedir}/src/main/filters/prod.properties</filter> 
     </filters> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

最後に、jarプラグイン。クラシファイアと入力ディレクトリに注意してください。あなたが望むようmvn clean installdevprod分類と成果物に適切にフィルタ処理リソースを生成する必要があります実行

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>default-jar</id> 
     <phase>package</phase> 
     <goals> 
     <goal>jar</goal> 
     </goals> 
     <configuration> 
     <classifier>dev</classifier> 
     <classesDirectory>${project.build.outputDirectory}/dev</classesDirectory> 
     </configuration> 
    </execution> 
    <execution> 
     <id>jar-prod</id> 
     <phase>package</phase> 
     <goals> 
     <goal>jar</goal> 
     </goals> 
     <configuration> 
     <classifier>prod</classifier> 
     <classesDirectory>${project.build.outputDirectory}/prod</classesDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

この例では、開発版には実行IDとしてdefault-resourcesdefault-jarを使用しました。これがなければ、ビルド時に未分類のjarアーティファクトが得られます。

+0

が含まれています** * prod.properties *と** dev.properties **、両方のjarファイルが同じになるようにしたい場合、どうすればいいですか?** config.properties?** –

+0

@ChristianVielma、あなたにはconfig.propertiesをjarファイルやconfig.propertiesファイルを両方のjarのフィルタとして使用していますか? – user944849

+0

私は、config-dev.propertiesとconfig-prod.propertiesを持っていれば、生成された各jarにconfig.propertiesを1つだけ持たせるにはどうしたらよいでしょうか。私は自分自身を説明していますか? –

3

バージョン番号を入力してカスタムフィルタをサポートしていることを確認してください。 Maven 3では、私はこれを例のように設定しました。バージョンがなければ動作しませんでした。

関連する問題