Java 更新WAR/JAR中的文件时不受日期限制

Java 更新WAR/JAR中的文件时不受日期限制,java,deployment,ant,war,Java,Deployment,Ant,War,我有一个ANT任务,它使用jar任务更新以前构建的war中的一些文件。[文件在编译WAR和可交付成果之间进行处理。]我如何让ANT更新我指定要更新的所有文件?jar有一个名为update=“[…]”的属性,它允许您强制创建新的jar文件,或者(添加新文件/“在必要时更新现有文件”) 例如: 编译Java类 罐子被创造出来了 A.战争产生了 运行一个脚本来修改jar .war需要更新已修改的JAR[JAR是war中所有文件的子集] 我遇到的问题是,被指示更新的jar在最后一步没有得到更新。日志声称

我有一个ANT任务,它使用jar任务更新以前构建的war中的一些文件。[文件在编译WAR和可交付成果之间进行处理。]我如何让ANT更新我指定要更新的所有文件?jar有一个名为
update=“[…]”
的属性,它允许您强制创建新的jar文件,或者(添加新文件/“在必要时更新现有文件”)

例如:

  • 编译Java类
  • 罐子被创造出来了
  • A.战争产生了
  • 运行一个脚本来修改jar
  • .war需要更新已修改的JAR[JAR是war中所有文件的子集]
  • 我遇到的问题是,被指示更新的jar在最后一步没有得到更新。日志声称刚刚处理的jar“过时了”。有没有办法强制更新?如果我将
    “jar[…]update”
    切换回false(默认情况下为false),则正确的jar文件将放在那里,但战争中的其余文件不会放在那里

    注意我意识到,在一切都完成后,这可能会导致战争。但这不是我的选择

    正在讨论的ant任务:

    <target name="(the 'Rewaring task')" depends="step-3">
        <echo>Adding modifed jars to war</echo>
        <jar destfile="${output.war.dir}/existing.war" update="true">
            <zipfileset dir="${output.jar.dir}/modded-jars" prefix="folder" />
        </jar>
    </target>
    
    
    在战争中增加改装的罐子
    

    更具体地说,我遇到的问题是“更新”行为

    看来Jar任务是正确的

    您确定要更新的文件具有正确的日期修改时间吗?这就是zipfileset/update选项中实际比较的日期修改时间吗

    我在签署JAR时看到过这个问题[并且将preservelastmodified选项设置为“true”(默认值:false)]


    要修复它,您只需要更改签名选项。

    您可以发布ant构建文件的相关部分吗?为什么re-war不是一个选项?您是否尝试过使用“war”任务而不是“jar”任务进行更新?(顺便说一句:由于格式错误,您的部分问题“如果我切换…”是不可见的。)我不能重复第3步的警告,因为第4步和第5步是在一个单独的ant脚本中,构建系统有点古怪。我遇到困难的特定任务已经发布。请看这个答案,它显示了如何使用临时构建文件夹“触摸”文件来更改时间戳(=zip更新的要求正常工作),替换zip(war)文件中的文件。