Maven的资源插件资源的平面副本(maven resources plugin flat copy

2019-10-16 14:05发布

给定含JAR-连接器,用于不同RDBMS一个文件夹“数据库”。 每个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个连接器,我不想硬编码他们。

Answer 1:

这样做将是你的jar文件安装到Maven仓库,然后用最正确的方式maven-dependency-plugin:copy目标。 或者,如果你想大致解决这个问题,然后使用maven-antrun-plugin (复制规则)。



Answer 2:

你有,因为你想行家弯曲成东西它不应该做的问题。 二进制工件应部署到您的工件库(或本地的仓库),并没有包含到项目中。 通过这种方式让他们定义为POM的依赖关系将确保他们拷贝到你的WEB-INF / lib目录下。



文章来源: maven resources plugin flat copy of resources