Maven Resources插件:如何将资源复制到目标文件夹并保留时间戳?

时间:2013-01-24 14:17:51

标签: java maven

当我执行一个干净的&在项目的基础上,Maven将所有资源复制到目标文件夹,但是使用创建的时间戳,而不是src / main / resources文件夹中原始文件的时间戳。是否有可能以某种方式指示它保留原始时间戳?

这对我们来说有问题的原因是我们正在开发的软件在启动时有一个数据库迁移,我们希望它在开发者机器上保持执行。但是由于时间戳不断变化,这会给数据库带来不必要的资源重新加载。

2 个答案:

答案 0 :(得分:1)

解决方案是使用ant的复制任务。 这分两步完成: 1)从正常处理中排除我们希望保留日期的文件(在本例中我处理测试资源。同样适用于构建资源):

<testResources>
    <testResource>
        <directory>src/test/resources</directory>
        <excludes>
            <exclude>**/some-files*/**</exclude>
        </excludes>
    </testResource>
</testResources>

2)第二步是使用mave ant插件使用ant任务复制它们:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>process-test-resources</phase>
            <configuration>
                <tasks>
                    <copy todir="${project.build.testOutputDirectory}" preservelastmodified="true">
                        <fileset dir="src/test/resources">
                            <include name="**/some-file*/**"/>
                        </fileset>
                    </copy>                            
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

答案 1 :(得分:0)

我认为不可能使用Maven resources plugin的默认功能。

您是否可以在运行时更改文件加载的路径(可能是根据环境进行配置)?如果是这样,那么也许您可以使用ant with maven并使用具有 preservelastmodified 属性的ant's copy task

意图是Maven的资源处理将继续像往常一样工作,但文件也会在每次构建时复制到运行时使用的单独位置。