2012-01-04 4 views
1

異なるRDBMSのJARコネクタを含む 'database'フォルダが指定されています。各JARは、独自のフォルダにあります。mavenリソースプラグインリソースのフラットコピー

+---database 
    +---db2 
     +---db2.jar 
    +---derby 
     +---derby.jar 
    +---h2 
     +---h2.jar 
    +---mysql 
     +---mysql.jar 

私はWEB-INF \ libににコピーするために、それらのJAR-のすべてのファイルを必要とします。ここで

は私のpom.xmlです:

+---WEB-INF/lib 
    +---db2 
     +---db2.jar 
    +---derby 
     +---derby.jar 
    +---h2 
     +---h2.jar 
    +---mysql 
     +---mysql.jar 

これはどのようにすべきである:

+---WEB-INF/lib 
    +---db2.jar 
    +---derby.jar 
    +---h2.jar 
    +---mysql.jar 

<build> 
    <plugins> 
     ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <webResources> 
        <resource> 
         <directory>../target/${project.artifactId}/classes/database</directory> 
         <targetPath>WEB-INF/lib</targetPath> 
         <includes> 
          <include>**/*.jar</include> 
         </includes> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

問題は、これらのJARは、そのディレクトリにコピーされるということであり、私は20個のコネクタを持っており、それらをハードコードしたくありません。

答えて

1

これを行う最も正しい方法は、jarファイルをMavenリポジトリにインストールしてから、maven-dependency-plugin:copyゴールを使用することです。または、これを大雑把に解決したい場合は、maven-antrun-plugin(コピールール)を使用してください。

2

あなたがしなければならないことにMavenを曲げようとしているので、あなたは問題を抱えています。バイナリアーチファクトは、アーティファクトリポジトリ(またはローカルMavenリポジトリ)に展開され、プロジェクトには含まれません。これをpomの依存関係として定義すると、WEB-INF/libにコピーされます。