这是一篇简短的教程,介绍了如何在maven中从输入目录复制属性文件到目标构建目录。
Maven为一个应用程序创建了[标准目录结构](/2011/12/maven-project-structure.html)。你可以查看我关于maven命令的其他帖子
默认的资源文件位于src/main/resources 文件夹中。这些文件在构建过程中会被复制到target/classes,在生成war文件时被复制到WEB-INF/classes。
当你打包项目时,这些属性会自动复制到目标文件夹。
有时你有一个叫src/conf 的文件夹,里面有配置属性。src/conf文件夹不属于maven标准文件夹结构。
如何在打包过程中把这些文件复制到目标文件夹?
maven提供了maven-resources-plugin 插件,可以将文件从源文件夹复制到目标文件夹。
下面的代码将文件从src/conf 文件夹复制到target/classes/conf 文件夹。
你必须使用正则表达式,将includes 的值改为**/。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/conf/</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/conf/</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
如何让Maven将资源文件复制到WEB-INF/lib目录?
假设你想把配置文件复制到war文件的WEB-INF/lib中。那么你如何复制这些文件呢?
你必须在 pom.xml 中使用maven-war-plugin 插件。
下面的代码将src/conf中的文件复制到目标/WEB-INF/lib文件夹以及战争文件/WEB-INF/lib文件夹。
在webResources ,使用directory 标签给出输入目录,并提供要添加的文件。使用targetPath 标签配置输出路径。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<webResources>
<directory>/src/conf</directory>
<includes>
<include>**/*.conf</include>
<includes>
<targetPath>WEB-INF/lib</targetPath>
</webResources>
</configuration>
</plugin>
</plugins>
</build>