如何将资源从一个maven项目复制到另一个

How to copy a resource from one maven project to another

我有一个 Maven 项目,由一个带有子项目的父项目组成。子项包含许多 war 个项目和一个 jar 项目(外部)。我想从 jar 项目的文件夹中复制一个 json 文件 (keycloak.json) 到所有 war 项目的 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>

最后我找到了更接近我原来的解决方案。这取决于父 pom 的相对项目路径,这在我的情况下不是问题。外部是我的罐子的名字

<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>