Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven:如何使快照工件完全相同,即使是在不同的时间构建的?_Java_Maven_Jenkins_Maven War Plugin_Maven Jar Plugin - Fatal编程技术网

Java Maven:如何使快照工件完全相同,即使是在不同的时间构建的?

Java Maven:如何使快照工件完全相同,即使是在不同的时间构建的?,java,maven,jenkins,maven-war-plugin,maven-jar-plugin,Java,Maven,Jenkins,Maven War Plugin,Maven Jar Plugin,我们经常使用快照并频繁地重建,并且发现即使源代码没有更改,结果工件也与上次构建的工件不完全相同 我希望他们是 根据我在SO帖子中的理解,我再也找不到它们改变的两个原因: JAR/WAR/etc文件是带有额外元数据的zip文件,每个条目都有一个时间戳,即“汇编时”或“编译时” 已签名JAR包含未排序的签名信息(即,JVM之间的顺序可能会更改) 我们目前不使用签名JAR,如果JAR/WAR/etc文件中的所有日期戳都为0,那么我就可以接受它,如果这可以为我购买二进制标识的话 显然,这意味着我需要

我们经常使用快照并频繁地重建,并且发现即使源代码没有更改,结果工件也与上次构建的工件不完全相同

我希望他们是

根据我在SO帖子中的理解,我再也找不到它们改变的两个原因:

  • JAR/WAR/etc文件是带有额外元数据的zip文件,每个条目都有一个时间戳,即“汇编时”或“编译时”
  • 已签名JAR包含未排序的签名信息(即,JVM之间的顺序可能会更改)
我们目前不使用签名JAR,如果JAR/WAR/etc文件中的所有日期戳都为0,那么我就可以接受它,如果这可以为我购买二进制标识的话

显然,这意味着我需要让Maven Archiver在组装jar时显式地设置日期戳,但是我在文档中找不到可以设置日期戳的位置,所以它很可能不存在。快速查看一下maven jar插件和maven war插件,看看信息是从哪里收集的,并没有让我更明智地了解如何更改它


我的问题是,我应该如何处理这个问题

如果代码中没有任何更改,为什么要重建?@khmarbaise“mvn clean install”倾向于这样做。这不是这里的问题。