6

当我在项目上执行清理和构建时,Maven 将所有资源复制到目标文件夹,但带有创建的时间戳,而不是 src/main/resources 文件夹中原始文件的时间戳。是否有可能以某种方式指示它保留原始时间戳?

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

4

2 回答 2

2

我认为不可能使用Maven 资源插件的默认功能。

您能否更改在运行时加载文件的路径(可能通过使其可根据环境进行配置)?如果是这样,那么也许您可以将ant 与 maven 一起使用,并使用具有preservelastmodified属性的 ant 复制任务。

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

于 2013-01-24T14:53:26.087 回答
1

解决方法是使用ant的copy任务。这分两步完成: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>
于 2014-01-28T23:06:44.887 回答