Стратегия для этого может заключаться в использовании задачи UpToDate для установки свойства.
Вам просто нужно скопировать файл war в war.bak сразу после проверки обновлений, чтобы подготовиться к следующему запуску.
Другая стратегия (возможно, даже лучше) состоит в том, чтобы использовать задачу UpToDate, чтобы определить, нужно ли генерировать войну, установив свойство, например, myuptodateproperty
. Затем назовите свою цель генерации войны и убедитесь, что она имеет ограничение if=${myuptodateproperty}
, чтобы не восстанавливать войну, если она не нужна.
Вы можете использовать что-то в строке (непроверенный код, может потребоваться некоторая работа):
<target name="war" depends="clean,fillbuildanddist,build">
<mkdir dir="${dist}" />
<uptodate targetfile="${dist}/${proj_name}.war" property="uptodatewar">
<fileset dir="${build}" />
</uptodate>
<antcall target="makewar" />
</target>
<target name="makewar" unless="uptodatewar">
<jar destfile="${dist}/${proj_name}.war" basedir="${build}" />
</target>
При этом свойство uptodatewar
должно быть установлено на true
только в том случае, если война не нуждается в восстановлении, и, таким образом, задача jar
будет вызываться только в этом случае. В целях, которые зависят от цели war
, вы можете использовать uptodatewar
для выполнения задач, только если война новая.