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:copy目标。或者,如果您想大致解决此问题,请使用maven-antrun-plugin(复制规则)。

于 2012-01-04T16:58:00.380 回答