无论日期如何,都要更新WAR / JAR中的文件

时间:2011-08-10 17:49:53

标签: java deployment ant war

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

一个例子:

  1. 编译Java类
  2. 创建罐子
  3. 创建.war:
  4. 运行脚本以修改Jars
  5. .war需要更新已修改的JAR [Jars是战争中所有文件的子集]
  6. 我遇到的问题是指示要更新的Jars在最后一步没有得到更新。该日志声称刚加工过的罐子“已过时”。有没有办法可以强制更新发生?如果我将"jar [...] update"切换回false(默认为默认值),则将正确的Jar文件放在那里,但战争中的其余文件不会。

    注意我意识到可以在完成所有操作后将其移动以生成WAR。但这对我来说不是一个选择。

    有问题的蚂蚁任务:

    <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>
    

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

1 个答案:

答案 0 :(得分:1)

看起来Jar任务是正确的。

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

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

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