2

異なる RDBMS の JAR コネクタを含むフォルダ「データベース」が与えられます。各 JAR は独自のフォルダーにあります。

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

これらの JAR ファイルをすべて WEB-INF\lib にコピーする必要があります。

ここに私のpom.xmlがあります:

<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 がディレクトリとともにコピーされることです。

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

20 個のコネクタがあり、それらをハードコーディングしたくありません。

4

2 に答える 2

3

Maven を本来あるべきではないものに曲げようとしているため、問題が発生しています。バイナリ アーティファクトは、アーティファクト リポジトリ (またはローカルの Maven リポジトリ) にデプロイする必要があり、プロジェクトには含めないでください。このように pom で依存関係として定義すると、確実に WEB-INF/lib にコピーされます。

于 2012-01-04T16:24:03.090 に答える
2

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

于 2012-01-04T16:58:00.380 に答える