使用Maven复制文件的最佳做法
我使用Maven2将配置文件和各种文档从开发环境复制到开发服务器目录。 奇怪的是,Maven在这个任务上似乎并不强大。
一些选项:
<copy file="src/main/resources/config.properties" tofile="${project.server.config}/config.properties"/>
使用Ant插件从Ant执行复制。
构建一个类型为zip的工件,以及通常为jar类型的POM的“主”工件,然后将该工件从存储库解压缩到目标目录中。
maven-resources插件,如下所述。
Maven Assembly插件 - 但是这似乎需要大量的手动定义,当我想简单地“常规”操作时。
这个页面甚至展示了如何构建一个插件来复制!
maven-upload插件,如下所述。
maven-dependency-plugin with copy,如下所述。
所有这些看起来是不必要的特别的:Maven应该擅长完成这些标准任务而没有大惊小怪。
有什么建议?
不要回避Antrun插件。 仅仅因为有些人倾向于认为Ant和Maven在反对,他们不是。 如果您需要执行一些不可避免的一次性定制,请使用复制任务:
<project>
[...]
<build>
<plugins>
[...]
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<configuration>
<tasks>
<!--
Place any Ant task here. You can add anything
you can add between <target> and </target> in a
build.xml.
-->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
在回答这个问题时,我将重点放在你提问的细节上。 我如何复制文件? 这个问题和变量名称引发了一个更大的问题,例如:“是否有更好的方法来处理服务器配置?” 使用Maven作为构建系统来生成可部署的构件,然后在单独的模块或其他位置完成这些自定义。 如果你共享了更多的构建环境,可能会有更好的方式 - 有一些插件可以配置多个服务器。 你可以附加一个在服务器根目录下解压缩的程序集吗? 你使用什么服务器?
再次,我确信有更好的方法。
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include> **/*.properties</include>
</includes>
</resource>
</resources>
...
</build>
为了复制文件使用:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resource-one</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/destination-folder</outputDirectory>
<resources>
<resource>
<directory>/source-folder</directory>
<includes>
<include>file.jar</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
为了复制文件夹与子文件夹使用下一个配置:
<configuration>
<outputDirectory>${basedir}/target-folder</outputDirectory>
<resources>
<resource>
<directory>/source-folder</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
链接地址: http://www.djcxy.com/p/29671.html