tags:

views:

243

answers:

2

For ease of access, I have a couple of config files in the parent of a series of project folders. When building the projects, they need copying into one of the projects source folders until after the build is finished, whereupon I'd like them to be deleted. At the moment, I have this:

<target name="build-java">
  <copy file="config.properties" todir="project/src" />
  <!-- Build other projects -->
  <delete file="project/src/config.properties" />
</target>

Which does the job if the projects build. Alas for my pride, they don't always. Ideally, I'd like the equivalent of the following Java:

File src = new File("config.properties");
File dst = FileUtils.copyFile(src, "project/src");
dst.deleteOnExit();
// Carry on with the rest of the build, content in the knowledge that whatever happens, the file will die.

But neither the Copy nor the Delete ant tasks seem up to the job. This doesn't seem like a particularly obscure need?

+3  A: 

How about defining a "clean" task that deletes the leftover files, and you can call that after each build (even after failed builds)?

I think Ant is not very good with these kind of conditional flow-control things. There may be a way to make that work, but that could get messy,

Thilo
Manually? That strikes me as less desirable than giving up and leaving the file in project/src.
MHarris
+2  A: 

You could try ant-contrib's trycatch to run the delete task even if the build fails.

There's other goodies in ant-contrib like the foreach task. If you're able to install it.

Koobz
+1 for that. But I maintain that these constructs are rather foreign to Ant. Which is why I guess none of this made it into Ant core.
Thilo
Can't use ant-contrib unfortunately, but that would do the job nicely. Thanks!
MHarris