You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Keith Hatton <ke...@publishingtechnology.com> on 2010/07/26 14:03:47 UTC

Preserve file timestamps when downloading from Ivy repository?

Hi all,

 

I have four projects:

-          Project A, which publishes some JAR files

-          Project B, which depends on Project A and publishes some JAR
files

-          Project C, which publishes a WAR file and depends on the jars
from Project A

-          Project D, which publishes a WAR file based on project C, but
also including additional jar files from Project B

 

The Ant build script for Project D unpacks the WAR file from Project C, adds
its dependencies using a standard Ant <copy> task, then repackages the WAR
file before publishing.

 

Now, I've made a new release of Projects A and C. The API for project A
hasn't changed, so there is no need to re-release Project B. I'm finding
that when I rebuild Project D, the previous release of Project A has been
included.

 

Digging a bit deeper, it appears that my <copy> task is copying the Jar
files for Project B and the old release of Project A (which was downloaded
through the dependencies of Project B). Although I say "old release", Ant
considers it to be the newer version of the Project A files, because Ant's
comparison is simply based on the file timestamps. The unpacked WAR file
libraries (which include the new release of Project A) have an older
timestamp than the Jar files downloaded from the Ivy repository for Project
A.

 

I had a look at the Ivy documentation but couldn't find any way to control
the timestamping behaviour of an Ivy resolver (I'm using the SSH resolver).
What I really need is the ability for Ivy to do the equivalent of "scp -p"
when it is downloading or resolving artifacts from the repository. Does
anyone have suggestions for a way to achieve this?

 

Thanks,

Keith