Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Maven将资源复制到src目标目录?_Java_Maven_Resources_Copy - Fatal编程技术网

Java 如何使用Maven将资源复制到src目标目录?

Java 如何使用Maven将资源复制到src目标目录?,java,maven,resources,copy,Java,Maven,Resources,Copy,我目前正在处理一个现有项目,该项目有一个pom.xml文件,其中包含以下内容: 假的 src **/*.物业 我在基本路径中有一个名为properties的目录,其中包含属性文件。我想在打包我的src目录中properties/下包含的所有属性文件时进行复制(否则程序将因缺少配置文件而崩溃) 所以我的问题是: 我如何使用Maven包含不在src目录下的资源文件 我试过这个,但似乎不起作用: 假的 src **/*.物业 ../properties/** 感谢您的帮助。如果您的文件结构如下

我目前正在处理一个现有项目,该项目有一个pom.xml文件,其中包含以下内容:


假的
src
**/*.物业
我在基本路径中有一个名为properties的目录,其中包含属性文件。我想在打包我的src目录中properties/下包含的所有属性文件时进行复制(否则程序将因缺少配置文件而崩溃)

所以我的问题是:

我如何使用Maven包含不在src目录下的资源文件

我试过这个,但似乎不起作用:


假的
src
**/*.物业
../properties/**

感谢您的帮助。

如果您的文件结构如下:

那么你就不必添加资源元素了。 Maven按默认值将位于/src/main/resources文件夹中的所有文件和文件夹复制到生成文件夹中,并将它们定位到编译的类路径文件的根目录中。
例如,如果您在
/src/main/resources/configuration.properties
中有一个名为configuration.properties的文件,则在运行
mvn clean compile
时,该文件将复制到您的
/target/classes/configuration.properties
因此,如果您删除该部分,文件将位于您想要的位置

<resource>
    <filtering>false</filtering>
    <directory>src</directory>
    <includes>
        <include>**/*.properties</include>
    </includes>
</resource>

假的
src
**/*.物业

通过在不改变项目结构的情况下将项目从ant迁移到maven,在构建中设置sourceDirectory testSourceDirectory,并使用maven资源插件,如下所示:在执行目标的哪个阶段小心

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources01</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/src</directory>
                                <includes>
                                    <include>**/*.properties</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-resources02</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/build/lib</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/target/</directory>
                                <include>*.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

maven资源插件
2.6
复制资源01
进程类
复制资源
${basedir}/target/classes
UTF-8
${basedir}/src
**/*.物业
拷贝资源02
验证
复制资源
${basedir}/build/lib
UTF-8
${basedir}/目标/
*jar先生

要将所有内容从源文件复制到目标文件,我使用以下命令

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes/static/</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/gui/build/</directory>
                                <includes>
                                    <include>**/*.*</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

maven资源插件
2.6
复制资源
进程类
复制资源
${basedir}/target/classes/static/
${basedir}/gui/build/
**/*.*

感谢您这么快的回答,问题是这个项目太老了(在maven之前),所以它没有遵循maven标准的目录布局。你的回答非常有用,我只需要添加我的属性目录作为资源目录。否。最好的办法是改变文件夹结构,遵循惯例,这样你的生活会更轻松。很高兴我能帮上忙。作为khmarbaise,它使您的生活更容易遵循标准对流。使您和其他使用此项目的人的生活更轻松:)我是开发团队的新成员,因此更改项目结构的决定不由我决定。我想改变项目结构(这样可以避免像这样棘手的问题),但我不能。谢谢你的帮助,你为我节省了很多时间;-)。我讨厌这个答案基本上说服OP改变他的方式,然后被接受。信不信由你,我来这里是想找到一种方法来完成OP最初打算做的事情。这个被接受的答案并没有回答实际的问题。为了回答这个问题,如果zpontikas没有给我一个解决方案,我会尝试一下。所以这里发生了什么:1.使用id copy resources01执行复制${basedir}/src目录${basedir}中找到的所有*.property文件/目标/类位于与src相同的包中。2.id为copy resources02的执行将把结果*.jar文件放在${basedir}/build/lib中,这是ant项目allready先前放置结果的地方。我知道有点难,最后需要由mvn删除并清理build/lib。命令:您应该使用的mvn安装