Java 保留lib文件夹中未更改的jar的时间戳

Java 保留lib文件夹中未更改的jar的时间戳,java,maven,package,pom.xml,preserve,Java,Maven,Package,Pom.xml,Preserve,如何在lib文件夹中保留未更改的jar的时间戳 我正在使用Robocopy将我的服务器库文件夹与本地计算机镜像同步。我通过速度较慢的vpn连接将所有JAR复制到服务器上的lib文件夹,只想复制已更改的JAR并删除不再需要的JAR\ 我需要的是一种方法,以确保在我的Maven构建中,删除lib文件夹中我不需要的jar,并且复制到lib文件夹中的jar只是以前不存在的较新jar 我不希望文件夹完全重建,因为这将修改JAR上的时间戳,然后。。。我必须将它们全部复制到服务器 如果JAR的原始时间戳由ma

如何在lib文件夹中保留未更改的jar的时间戳

我正在使用Robocopy将我的服务器库文件夹与本地计算机镜像同步。我通过速度较慢的vpn连接将所有JAR复制到服务器上的lib文件夹,只想复制已更改的JAR并删除不再需要的JAR\

我需要的是一种方法,以确保在我的Maven构建中,删除lib文件夹中我不需要的jar,并且复制到lib文件夹中的jar只是以前不存在的较新jar

我不希望文件夹完全重建,因为这将修改JAR上的时间戳,然后。。。我必须将它们全部复制到服务器

如果JAR的原始时间戳由maven保存,以便时间戳与我在maven存储库中找到的时间戳保持一致,那么这就可以了。不幸的是,Maven给了他们所有人一个新的时间戳

我使用标准maven setup pom创建一个包含所有依赖项的lib文件夹:


maven依赖插件
安装
复制依赖项
${project.build.directory}/lib
maven jar插件
真的
解放党/
${mainClass}
注:

我的大多数依赖jar是稳定的发布jar,而我的大多数项目依赖于快照jar。无论如何,原始库jar的时间戳必须是放置在lib中的副本的时间戳

假设lib中的jar是副本或本地mvn存储库中的jar,mvn clean安装还应该保留文件lastmod在lib中放置副本的时间。至少,这应该是默认行为,因为lib包含原始mvn获取的jar文件的真实副本


同样有趣的是,mvn在将获取的JAR放入本地存储库时保留了它们的文件时间。插件是罪魁祸首,因为它负责将jar复制到lib中,并为它们分配新的时间戳(argg)

如果您不介意不使用
maven依赖插件
,您可以尝试在
pom.xml
中使用这些配置:

<build>
    <plugins>
        <plugin>
            <groupId>com.github.goldin</groupId>
            <artifactId>copy-maven-plugin</artifactId>
            <version>0.2.5</version>
            <executions>
                <execution>
                    <id>copy-deps</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <targetPath>${project.build.directory}/lib</targetPath>
                                <dependency>
                                    <includeScope>compile</includeScope>
                                </dependency>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

com.github.goldin

如果您正在执行
mvn clean install
,并且您的
lib
文件夹与您的
${project.build.directory}
相对,这难道不会使您的
lib
文件夹始终是新的吗?为了进一步理解,说库中的大多数JAR都是快照JAR是正确的吗?我在主要问题中添加了一个not来解释。是的,库被重建了。但是,lib中jar的副本应该与原始文件具有相同的时间戳。这将完全解决问题。为供将来的用户参考,有一个关于此的创建,但它被自动关闭为非活动。谢谢!我会查一查。我试过了,它在我的库中产生的JAR文件比maven依赖插件少一个。我来看看有什么区别。这看起来可能就是答案。老实说,我必须仔细看看,为什么其中一个罐子在一个罐子里,而不是另一个。然而,这解决了问题,因为它做了Maven依赖插件应该做的事情——保留复制资源的时间戳!享受你的50分!