【问题标题】:Copy/include resource from another maven project从另一个 Maven 项目复制/包含资源
【发布时间】:2020-08-20 00:05:36
【问题描述】:

让我解释一下我在寻找什么。

有一个项目的 POM.xml 在路径中

project/ui/application/pom.xml. 

我通常使用 ui/applicio.pom.xml 构建我的 WAR 文件。

在 UI 的 POM 中,我包含了几个模块,例如“applicationDTO”并且其 POM 位于路径中

project/common/applicationDTO/pom.xml.

现在在 applicationDTO 项目中有一个文件"ABC.properties",我想将它包含在我使用 UI 项目创建的 WAR 文件中。

简而言之,我想在 UI 的项目中包含 ABC.properties 文件。

以下是我尝试过的,但我收到类似的错误消息

skip non existing resourceDirectory C:\Users\Desktop\project\ui\application\common\applicationDTO\QA

注意:项目是包含 UI 和 applicationDTO 项目的源文件夹。我希望通过 POM 将文件表单 applicationDTO 文件夹复制到 UI 文件夹中。

如果我无法解释我的问题,请原谅。

【问题讨论】:

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


    【解决方案1】:

    你可以为此使用 maven 资源插件

    https://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html

    您可能需要调整路径以使其正常工作

    更新:

    考虑到你的文件夹结构是

    ABC 
    -ui
      - application (build here)
        - pom.xml
        - classes
    -common
      - ABC.properties
    

    现在,当从应用程序文件夹运行 maven 构建时,下面可以是部分

        <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <executions>
            <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>./classes</outputDirectory>
                    <resources>
                        <resource>
                            <includes>
                                <include>ABC.properties</include>
                            </includes>
                            <directory>../../common</directory>
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                    <delimiters>
                        <delimiter>@{*}</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

    • 它是否适用于放置在 {basedir} 之外的属性文件?我的 POM 存在于“应用程序”文件夹中,这是项目 UI 的子文件夹。我希望将此文件复制到另一个项目的 classes 文件夹中,该文件夹超出了“Application”项目 basedir 的范围。希望你得到我的关注?
    • 我试过上面的代码。但是我在输出目录中提供的路径被跳过了。 C:\Users\Gaurav\ABC\ui\application\target\Home\WEB-INF\classes 。我可以将上面的路径用作 ..\ui\application\target\Home\WEB-INF\classes 可以吗?
    • 对不起,如果我把你弄糊涂了。假设 ABC 是父文件夹,在 ABC 中,UI 和 Common 是并行文件夹。在 UI 文件夹中,有一个名为“Application”的子文件夹,其中包含我构建我的 WAR 的 POM.xml。现在我想要一个来自“COMMON”文件夹(带有单独的 POM.xml)的文件,它与 UI 文件夹平行,移动到“Application”文件夹的类中。希望对你有帮助。
    • 更新了我的答案请检查,如果 application 和 common 是独立项目,它应该可以工作,如果它们都是多模块项目的一部分并且 ABC 是父项,您可能需要添加以上部分在父 pom.xml
    • 谢谢伙计,它现在对我有用。根目录也做了一些改动。最后它的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多