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

sta*_*oua 15 java resources copy maven

我目前正在开发一个现有项目,该项目有一个带有以下内容的pom.xml文件:

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是:

我怎么能用Maven包含不在src目录下的资源文件?

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

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
            <include>../properties/**</include>
        </includes>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

zpo*_*kas 22

如果您的文件结构如下所示: 标准目录布局

在此输入图像描述

然后你不必添加资源elemt.默认情况下, Maven 将位于/ src/main/resources文件夹中的所有文件和文件夹复制到构建文件夹,并将它们定位在已编译的类路径文件的根目录中.
如果您有一个名为configuration.properties的文件,/src/main/resources/configuration.properties那么当运行mvn clean compile此文件时将被复制到您/target/classes/configuration.properties 的文件中如果删除该部分,文件将位于您想要的位置

<resource>
    <filtering>false</filtering>
    <directory>src</directory>
    <includes>
        <include>**/*.properties</include>
    </includes>
</resource>
Run Code Online (Sandbox Code Playgroud)

  • 当答案基本上说服 OP 改变他的方式,然后被接受时,我讨厌这一点。信不信由你,我来到这里是为了寻找一种方法来做 OP 最初打算做的事情。这个接受的答案**不**回答实际问题。 (2认同)

abe*_*res 10

通过将项目从ant迁移到maven而不更改项目结构,在构建中设置sourceDirectory testSourceDirectory并使用maven-resource-plugin作为下一步,在执行目标时要小心.

        <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>
Run Code Online (Sandbox Code Playgroud)


147*_*.3k 5

要将所有内容从源复制到目标,我使用了以下内容

        <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>
Run Code Online (Sandbox Code Playgroud)