2012-04-29 4 views
0

src/main/java/resourcesという構造を持つjar say xyz.jarがあります。このリソースフォルダには、/ fileone.txt b/filetwo.txtとc/filethree.txtという3つのサブフォルダがあります。私は3つの異なる3つのwarファイルを作成するためにこのjarを依存関係として使用しています。これらのwarファイルのそれぞれでは、私は3つのファイル.i.eのうちの1つ、fileone.txtまたはfiletwo.txtまたはfilethree.txtのみを使用します。したがって、3つのwarファイルのいずれかを構築するためのpom.xmlには、残りの2つのファイルを除外するように設定する方法がありますか? たとえば、firstWar.warをビルドしている場合、私はfileone.txtだけをインクルードし、他の2つは除外したいとします。 私は、Maven warプラグインのpackageExcludesはここで使用できると信じていますが、わからないのですか?おかげさまで maven3の戦争に依存している特定のファイルを除外する

答えて

1
  • 解決方法1:

あなたは、リソースが含まれているjarファイルを持っていると仮定しています。ファイル/リソースを代わりにwarモジュールに入れて、1つのビルドから3つの異なるwarを生成することをお勧めします。これは、maven-assembly-pluginを使用することで解決できます。あなたは以下の構造を有する:

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

あなたはアセンブリ記述子と、もちろんにこのようなポンポンファイルが必要になります。

<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> 

記述子ファイルは、次のようになります。

<assembly... 
    <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> 

すべてのリソース(あなたの場合は3回)が必要です。テスト、qa、プロダクション(あなたに適切なIDを与えることを忘れないでください)のような名前を付けられます。 src/main/assemblyフォルダーに配置してください。またはあなたのenvrionment(file1、file2、file3との関係では、私はそこに現実にはより良い名前が存在すると思う)。

  • 解決方法2:

あなたが使用してjarファイルに同じ設定を行うと、あなたが好きなリソースを表す適切な分類子を持つ三つの異なるjarファイルを作成します。しかし、その後、あなたは、異なるリソースごとに異なる3つのwarファイルを作成するためにwarビルドを変更する必要があります。セットアップについてi wrote a blog entry

+0

ありがとうございますkhmarbaise、この記述子ファイルは、3つのファイルのそれぞれにする必要がありますか?これらの記述子ファイルはどのように名前を付けるべきですか?ファイルはresouces/folder1/file1 resources/folder2/file2およびresources/folder3/file3として存在します。 – pranay

+0

拡張された適切な回答。 – khmarbaise

+0

もう一度感謝します..しかし、私は3つのwarファイルを一緒にビルドしている場合、これがうまくいくと思いますか? – pranay

関連する問題