如何将文件复制到maven的目标构建目录?

736 阅读1分钟

这是一篇简短的教程,介绍了如何在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>