我目前正在开发一个现有项目,该项目有一个包含以下内容的pom.xml文件:
<resources>
<resource>
<filtering>false</filtering>
<directory>src</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
我在基本路径中有一个名为properties的目录,其中包含属性文件。我想在我的src目录中打包属性/包含所有属性文件时复制(否则程序会因缺少配置文件而崩溃)。
所以我的问题是:
我如何使用Maven包含不在src目录下的资源文件?
我试试这个,但它似乎不起作用:
<resources>
<resource>
<filtering>false</filtering>
<directory>src</directory>
<includes>
<include>**/*.properties</include>
<include>../properties/**</include>
</includes>
</resource>
</resources>
感谢您的帮助。
答案 0 :(得分:21)
如果您的文件结构如下: Standard Directory Layout
然后你不必添加资源elemt。
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>
答案 1 :(得分:9)
通过将项目从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>
答案 2 :(得分:0)
要将所有内容从源复制到目标,我使用了以下方法
<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>