当前位置: 首页 > 知识库问答 >
问题:

将资源文件从子模块复制到maven的主模块中

钱元徽
2023-03-14

在我的java应用程序中,我只是想知道是否可以将src/main/resources下的资源文件从maven子模块复制或直接使用到主maven模块(该子模块作为依赖项)src/main/resource文件夹中,因此我不需要再次手动将所有资源文件复制到我的工作区中。

共有1个答案

逄边浩
2023-03-14

您可以使用maven依赖插件来完成这项工作。

下面是一个配置,您可以将它包含在构建的主模块pom.xml中

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>hepl.cecotepe.epick</groupId>
                                <artifactId>wsdl</artifactId>
                                <version>${wsdl.version}</version>
                                <type>jar</type>
                            </artifactItem>
                        </artifactItems>
                        <overWrite>true</overWrite>
                        <outputDirectory>${basedir}/src/main/resources/webservices</outputDirectory>
                        <includes>**/*.wsdl, **/*.xsd</includes>
                        <excludes>**/META*/**, **/Documentation/**</excludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

artifactItem是您希望将文件从中复制到模块中的模块。在本例中,您将使用子模块groupId、artifactId和version填充artifactItem字段。

该插件将在所有文件夹(包括目标、src和子文件夹)中获取所有. wsdl和. xsd文件,文档和META*文件夹(和子文件夹)除外。文件将每次复制到主模块 /resources/webservices文件夹中。

要使整个工作正常,您需要将子模块打包为jar(在子模块pom.xml中包含jar)并使用mvn install将其安装在本地maven存储库中。之后,您可以使用mvn初始化复制主模块中的文件

注意:初始化阶段包含在默认生命周期中,是执行的第一阶段。当您使用默认生命周期时,maven要做的第一件事就是将文件从子模块复制到主模块。

 类似资料:
  • 我有一个spring boot项目,由maven构建。我必须使用父项目中包含的目录进行子项目中的集成测试。(Liquibase变更日志文件。) 在子模块的测试资源下复制它的最佳做法是什么? 因此,我想将我在集成测试中使用的my_directory复制到child/src/main/test/resources下。你知道从孩子的pom.xml中做这件事的最佳做法是什么吗?

  • 问题内容: 到目前为止,直到未模块化的Java,您只需将文件放入以确保它位于类路径中,然后使用 从classpath的几乎任何地方开始。 现在有了模块,地块变厚了。 我的项目设置如下: 配置文件放在里面。 项目运行于 由于主类不是位于我自己的项目中,而是位于外部框架模块中,因此看不到。现在的问题是,是否有办法以某种方式将我的配置文件放入模块或打开它?我是否必须更改框架上游加载文件的方式? 我尝试在

  • 我的项目设置如下: 配置文件放在中。 运行项目时使用 如何以最佳实用的方式实现这一点,使它能够像在Java8中一样工作,并且尽可能少的改动?

  • 但现在我在洛杉矶有404台:8080台。看起来我无法访问子模块静态资源。 父pom: 和儿童pom: 它怎么了? 更新我把我的html放到服务器/src/webapp/在第一种情况下,它就像一个魅力。关于访问,我的意思是从浏览器获取html。 运行spring boot时更新2:运行maven任务它也可以工作。只有当我在intellij“run”按钮上作为spring项目运行时,才会产生这个问题。

  • 我正在处理一个包含两个模块的maven项目:“impl”,它生成一个带有资源的jar;“server”,它生成一个服务器实现的war。 当前,当我尝试创建构建时,impl jar文件包含在服务器的war文件的WEB-INF/lib目录中,所以在服务器war文件生成后,将对其进行解压缩,并在此基础上,所有测试都在运行,并且一切正常。 作为一个要求,我必须将jar和war分开,这样war文件将不包含任

  • 任何一个类都可以作为主模块,只要你将其配置在 web.xml 中,这样的设计主要是为了方便 一些非 JSP/Servlet 标注的 web 服务器整合 Nutz.mvc 框架。 在主模块中,你可以声明如下的注解: @Modules - 声明应用的所有子模块 @IocBy - 设置应用所采用的 Ioc 容器 @SetupBy - 应用启动以及关闭时的额外处理 @Views - 自定义的扩展视图 @L