What you describe seems very unlikely to be possible... And to be honest I
don't see why you need this. A common idiom/pattern in using Ant is to
generate all build products in a build/ directory (which doesn't exist
previously), and the 'clean' target just removes that one directory.

If anything goes wrong (and we all know a lot of things can go wrong with
computers in general!), then you're likely to only have corrupted the build/
directory only... Just rebuild from scratch after getting rid of this build/
dir then!

Almost nothing is atomic/transactional in Ant, so a failure in the middle of
the task will have partially done something that cannot be undone (<javac>
fails after compiling some files, <copy> fails after copying some files,
etc...). Attempting to add such a transactional behavior to Ant seems very
difficult if at all possible, and frankly a bit on the paranoid side.

Sorry I can't help you more. Ciao, --DD

-----Original Message-----
From: Klein, Scott @ TW [mailto:scott.klein@;L-3com.com] 
Sent: Wednesday, November 13, 2002 3:20 PM
To: 'Ant Users List'
Subject: RE: conditions and property's

well, then let me back it all the way up.

all i want to do is perform a series of tasks and revert to the original
state if any errors occur.

I started by looking at the <fail> task, but I couldn't find a way to
determine whether or not to execute a fail, which led me down the long path
described previously. Most of the tasks have to do with file and directory
manipulation (copy/delete/zip/etc), but in the future I will have
proprietary tasks (or perhaps just additional targets...not sure yet).

hows that?

scott

-----Original Message-----
From: Dominique Devienne [mailto:DDevienne@;lgc.com]
Sent: Wednesday, November 13, 2002 12:52 PM
To: 'Ant Users List'
Subject: RE: conditions and property's


The problem I have is that I don't understand your example!

What does <uptodate property="copy.from.filename" value="aFile.file"/> do?
What's your srcfile and targetfile???

Do you know that <copy> is intelligent, and will only do a copy if needed?

In any case, since you're using <antcall>, check the file exists after doing
the <antcall>, and not before, since all properties defined *within* the
<antcall> are lost after the <antcall> *returns*.

I was asking you 'what are you trying to do?' to find out what you were
trying to accomplish (seems like copying a file under some conditions???)
instead of 'what you were doing' (trying to make multiple calls to a
'generic' target!?!?). Is that clearer? --DD

-----Original Message-----
From: Klein, Scott @ TW [mailto:scott.klein@;L-3com.com] 
Sent: Wednesday, November 13, 2002 2:30 PM
To: 'Ant Users List'
Subject: RE: conditions and property's

Sorry, I thought I had explained that. I am trying to make multiple calls to
a 'generic' target (see example below), but have the execution of said
target be based on a property. This means that a property must be able to be
"unset". Note that since Ant doesn't support if/else I assume that the only
way to do this is with properties.


Here is an example:

        <target name="copyFile" if="copy.file.exists">
                <copy file="${copy.from.filename}"
tofile="${copy.to.filename}" overwrite="true" />
        </target>

        <target name="moveStuffAround" depends="moreMoving">
                <uptodate property="copy.from.filename"
value="${FROM_DIR}\${USER_FILE}" />
                <uptodate property="copy.to.filename"
value="${TO_DIR}\${USER_FILE}" />
                <condition property="copy.file.exists">
                        <available file="${copy.from.filename}" />
                </condition>
                <antcall target="copyFile" inheiritAll="true" />
        </target>

        <target name="moreMoving">
                <uptodate property="copy.from.filename" value="aFile.file"
/>
                <uptodate property="copy.to.filename"
value="anotherFile.file" />
                <condition property="copy.file.exists">
                        <available file="${copy.from.filename}" />
                </condition>
                <antcall target="copyFile" inheiritAll="true" />

        </target>

so the problem that arises is that once the 'copy.file.exists' property is
set the call to copyFile will _forever after_ be allowed. 

I know Ant can do what I want to do, the question is how efficiently? 

-----Original Message-----
From: Dominique Devienne [mailto:DDevienne@;lgc.com]
Sent: Wednesday, November 13, 2002 12:01 PM
To: 'Ant Users List'
Subject: RE: conditions and property's


You should not depend on any logic which requires unsetting a property...
That's just how Ant works and was designed. I'm pretty sure Ant can do what
you want it to do, provided you shift your thinking around... Ant is not a
scripting language, and whenever one tries to bend it that way, it quickly
becomes painful!

Maybe describe what you want to do as opposed to how you were trying to do
it, and someone's bound to find a solution. --DD

-----Original Message-----
From: Matt Benson [mailto:gudnabrsam@;yahoo.com] 
Sent: Wednesday, November 13, 2002 1:52 PM
To: Ant Users List; Hari Kodungallur
Subject: Re: conditions and property's

As I understand it, you could unset a property
programmatically, but not via normal use of the
property task in an Ant buildfile.

-Matt

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

Reply via email to