【问题标题】:maven resources plugin flat copy of resourcesmaven 资源插件 资源的平面副本
【发布时间】:2012-02-02 12:09:22
【问题描述】:

给定一个文件夹“数据库”,其中包含用于不同 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 个连接器,我不想对它们进行硬编码。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2019-09-16
        • 2017-04-27
        相关资源
        最近更新 更多