2012-03-14 7 views
1

プロジェクトの2つの異なるバージョンを自動的に作成しようとしています。プロファイルなしの複数のsrc/main/resourcesフォルダ

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <goals> 
         <goal>exploded</goal> 
        </goals> 
       </execution>     
      </executions> 
      <configuration> 
       <resources> 
        <resource> 
        <directory>src/main/resources/first</directory> 
        </resource> 
       </resources> 
       <webappDirectory>${webappDirectory}</webappDirectory> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <goals> 
         <goal>war</goal> 
        </goals> 
       </execution>     
      </executions> 
      <configuration> 
       <resources> 
        <resource> 
         <directory>src/main/resources/second</directory> 
        </resource> 
       </resources> 
       <webappDirectory>${project.build.directory}/deployment</webappDirectory> 
      </configuration> 
     </plugin> 

を次のように私が行っていることは、私は二つの異なるプラグインの実行を追加しているされてこれは、両方のwebappDirectoriesを構築し、期待どおりには、WARファイルを作成しますが、リソースが正しく含まれていません(無視しているようです上記のリソース定義)。

私は間違ったフェーズでこれをやっていると思いますが、どの段階でデフォルトのリソースディレクトリを上書きする必要がありますか?

(私は両方が一度に行われているにしたい、二つの異なるプロファイルを持ってしたくない、何卒ご了承下さい)

+0

私はむしろ 'package'フェーズを使います。しかし、リソースは 'compile'の前に処理されるので、なぜ正しく埋め込まれていないのかわかりません。 –

答えて

4

(私はその問題についてblog entry exactlyを書いているが、本質はMavenプロジェクトを持ってしようとしていますあなたのケースで戦争モジュール)以下の構造を持つ:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>test</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
     <execution> 
     <id>qa</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
     <execution> 
     <id>production</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

. 
|-- pom.xml 
`-- src 
    |-- main 
    | |-- java 
    | |-- resources 
    | |-- environment 
    | | |-- test 
    | | | `-- database.properties 
    | | |-- qa 
    | | | `-- database.properties 
    | | `-- production 
    | |  `-- database.properties 
    | `-- webapp 

最も重要なことは、このような構成でmaven-assembly-pluginを経由して異なる構成を作成することですあなたも必要なもの

次のようにassembly descriptorsです:もちろん

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 

    <id>test</id> 
    <formats> 
    <format>war</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <unpack>true</unpack> 
     <useProjectArtifact>true</useProjectArtifact> 
    </dependencySet> 
    </dependencySets> 
    <fileSets> 
    <fileSet> 
     <outputDirectory>WEB-INF</outputDirectory> 
     <directory>${basedir}/src/main/environment/test/</directory> 
     <includes> 
     <include>**</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
</assembly> 

あなたがそれに応じて名前を付けており、明らかにあなたが同様の記述子内のディレクトリを変更する必要があります。これに基づいて、パッケージ・サイクル中に構成が異なる複数の成果物(あなたのケースのwarファイル)を作成することが可能になりました。だから、あなたは、単に経由構築プロジェクトを呼び出す:

mvn clean package 

最後に私は、そのフォルダが別の設定に変更されない生産情報のために使用されるべき引き起こし、src/main/resourcesフォルダを使用しないことをお勧めします。さらに、src/test/resourcesがテストリソース用に使用されます。

+0

お返事ありがとうございます:) – JustDanyul

関連する問題