maven资源插件平面资源副本

时间:2012-01-04 15:34:42

标签: maven pom.xml maven-resources-plugin

给定一个包含不同RDBMS的JAR连接器的文件夹'database'。每个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个连接器,我不想硬编码。

2 个答案:

答案 0 :(得分:2)

你遇到了问题,因为你试图将maven变成一些不应该做的东西。二进制工件应该部署到工件存储库(或本地maven存储库)中,而不包含在项目中。这样将它们定义为pom中的依赖项将确保它们被复制到WEB-INF / lib中。

答案 1 :(得分:1)

最正确的方法是将jar文件安装到Maven存储库中,然后使用maven-dependency-plugin:copy目标。或者如果你想粗略地解决这个问题,那么使用maven-antrun-plugin(复制规则)。