首页 > 解决方案 > 如何将资源从一个 Maven 项目复制到另一个

问题描述

我有一个由父项目和子项目组成的 Maven 项目。孩子们由许多战争项目和一个 jar 项目(外部)组成。我想从 jar 项目的文件夹中将一个 json 文件(keycloak.json)复制到所有战争项目的 WEB-INF 中。

到目前为止,我通过在每个项目中都有一个包含所有 keycloak.json 的文件夹来工作。(根据使用的 Maven 配置文件选择不同的 keycloak.json)。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven.war.plugin.version}</version>
    <configuration>
        <webResources>
            <resource>
                <directory>keycloak/${keycloak.dir}</directory>
                <targetPath>WEB-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/keycloak.json</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

我正在尝试从 jar 文件中复制 keycloak.json,因此我不必在其他项目中复制 20 次。到目前为止,我已经尝试了以下似乎将文件复制到目标的方法,但它没有被 Eclipse 中的 WTP 拾取

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copyKeycloak</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/WEB-INF</outputDirectory>
                <overwrite>true</overwrite>
                <resources>
                    <resource>
                        <directory>../external/src/main/resources/keycloak/${keycloak.dir}/</directory>
                        <includes>
                            <include>keycloak.json</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

标签: eclipsemavenwarkeycloakeclipse-wtp

解决方案


最后我找到了更接近我原来的解决方案。它取决于来自父 pom 的相对项目路径,这在我的情况下不是问题。external 是我的 jar 的名称

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven.war.plugin.version}</version>
    <configuration>
        <webResources>
            <resource>
                <directory>../external/src/main/resources/keycloak/${keycloak.dir}</directory>
                <targetPath>WEB-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/keycloak.json</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

推荐阅读