You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by re...@yahoo.com on 2008/12/30 04:25:38 UTC
How to make exec not run by timestamp?
How can I make the exec task smart enough so that it won't do anything if the file generated by the task has already been created?
For example,
<copy file="srcFile.txt" tofile="destFile.txt" verbose="true"/>
does nothing the second time. Not sure how it works, but maybe if the timestamp of destFile.txt is equal to or larger than srcFile.txt than nothing happens.
So what I want is something like a generatedfile argument for exec. For example:
<exec executable="${java.home}/bin/keytool.exe" generatedfile="${keystore}">
<arg value="-genkey"/>
<arg value="-alias"/>
<arg value="${alias}"/>
<arg value="-keyalg"/>
<arg value="RSA"/>
<arg value="-validity"/>
<arg value="36000"/>
<arg value="-keystore"/>
<arg value="${keystore}"/>
<arg value="-storepass"/>
<arg value="${storepass}"/>
<arg value="-keypass"/>
<arg value="${keypass}"/>
<arg value="-dname"/>
<arg value="${dname}"/>
</exec>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
Re: How to make exec not run by timestamp?
Posted by "Scot P. Floess" <sf...@nc.rr.com>.
Good point... Nice :)
On Tue, 30 Dec 2008, David Weintraub wrote:
> Although you are right that Scott can use the <available> task to see
> if the target is already created, I suspect Scott would want to run
> the <exec> target if one of the dependencies involved has been
> updated.
>
> He should look at the <uptodate> task. This allows you to specify a
> bunch of dependencies, then if one of those dependencies is newer than
> the specified target, a property is then set.
>
> You can then check this property when you execute your actual task.
> Normal way to do this is something like this:
>
> <target name="exec-task-test">
> <uptodate
> property="key.already.built"
> target="${keystore}">
> <srcfiles>
> <fileset dir=.../>
> </srcfiles>
> </uptodate>
>
> <target name="execute-task"
> depends="exec-task-test"
> unless="key.already.built">
> <exec ...>
> </target>
>
> The AntContrib <outofdate> task is much more flexible and easier to
> use. However, you have to install the AndContrib library in your Ant
> classpath, and you have to define a <taskdef> in your build file. So,
> most people simply opt for the uptodate task.
>
> On Tue, Dec 30, 2008 at 12:13 PM, Scot P. Floess <sf...@nc.rr.com> wrote:
>>
>> You can try the following:
>>
>> Stock Ant:
>>
>> 1) Wrap your call to exec in a target, and place an "if" on the target:
>>
>> <project>
>> <condition property = "file.found">
>> <available file = "your.file"/>
>> </condition>
>>
>> <target name="exec" if = "file.found">
>> <exec...>
>> ...
>> </exec>
>>
>> <touch file = "your.file"/>
>> </target>
>> </project>
>>
>> 2) Use AntContrib's if task:
>>
>> <project>
>> <!-- include Ant Contrib here... -->
>>
>> <if>
>> <available file = "your.file"/>
>> <then>
>> <exec...>
>> ...
>> </exec>
>>
>> <touch file = "your.file"/>
>> </then>
>> </if>
>> </project>
>>
>>
>>
>>
>> On Mon, 29 Dec 2008, removeps-generic@yahoo.com wrote:
>>
>>> How can I make the exec task smart enough so that it won't do anything if
>>> the file generated by the task has already been created?
>>>
>>> For example,
>>>
>>> <copy file="srcFile.txt" tofile="destFile.txt" verbose="true"/>
>>>
>>> does nothing the second time. Not sure how it works, but maybe if the
>>> timestamp of destFile.txt is equal to or larger than srcFile.txt than
>>> nothing happens.
>>>
>>> So what I want is something like a generatedfile argument for exec. For
>>> example:
>>>
>>> <exec executable="${java.home}/bin/keytool.exe"
>>> generatedfile="${keystore}">
>>> <arg value="-genkey"/>
>>> <arg value="-alias"/>
>>> <arg value="${alias}"/>
>>> <arg value="-keyalg"/>
>>> <arg value="RSA"/>
>>> <arg value="-validity"/>
>>> <arg value="36000"/>
>>> <arg value="-keystore"/>
>>> <arg value="${keystore}"/>
>>> <arg value="-storepass"/>
>>> <arg value="${storepass}"/>
>>> <arg value="-keypass"/>
>>> <arg value="${keypass}"/>
>>> <arg value="-dname"/>
>>> <arg value="${dname}"/>
>>> </exec>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>>> For additional commands, e-mail: user-help@ant.apache.org
>>>
>>>
>>
>> Scot P. Floess
>> 27 Lake Royale
>> Louisburg, NC 27549
>>
>> 252-478-8087 (Home)
>> 919-754-4592 (Work)
>>
>> Chief Architect JPlate http://sourceforge.net/projects/jplate
>> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>>
>> Architect Keros http://sourceforge.net/projects/keros
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>> For additional commands, e-mail: user-help@ant.apache.org
>>
>>
>
>
>
> --
> --
> David Weintraub
> qazwart@gmail.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim
Architect Keros http://sourceforge.net/projects/keros
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
Re: How to make exec not run by timestamp?
Posted by David Weintraub <qa...@gmail.com>.
Although you are right that Scott can use the <available> task to see
if the target is already created, I suspect Scott would want to run
the <exec> target if one of the dependencies involved has been
updated.
He should look at the <uptodate> task. This allows you to specify a
bunch of dependencies, then if one of those dependencies is newer than
the specified target, a property is then set.
You can then check this property when you execute your actual task.
Normal way to do this is something like this:
<target name="exec-task-test">
<uptodate
property="key.already.built"
target="${keystore}">
<srcfiles>
<fileset dir=.../>
</srcfiles>
</uptodate>
<target name="execute-task"
depends="exec-task-test"
unless="key.already.built">
<exec ...>
</target>
The AntContrib <outofdate> task is much more flexible and easier to
use. However, you have to install the AndContrib library in your Ant
classpath, and you have to define a <taskdef> in your build file. So,
most people simply opt for the uptodate task.
On Tue, Dec 30, 2008 at 12:13 PM, Scot P. Floess <sf...@nc.rr.com> wrote:
>
> You can try the following:
>
> Stock Ant:
>
> 1) Wrap your call to exec in a target, and place an "if" on the target:
>
> <project>
> <condition property = "file.found">
> <available file = "your.file"/>
> </condition>
>
> <target name="exec" if = "file.found">
> <exec...>
> ...
> </exec>
>
> <touch file = "your.file"/>
> </target>
> </project>
>
> 2) Use AntContrib's if task:
>
> <project>
> <!-- include Ant Contrib here... -->
>
> <if>
> <available file = "your.file"/>
> <then>
> <exec...>
> ...
> </exec>
>
> <touch file = "your.file"/>
> </then>
> </if>
> </project>
>
>
>
>
> On Mon, 29 Dec 2008, removeps-generic@yahoo.com wrote:
>
>> How can I make the exec task smart enough so that it won't do anything if
>> the file generated by the task has already been created?
>>
>> For example,
>>
>> <copy file="srcFile.txt" tofile="destFile.txt" verbose="true"/>
>>
>> does nothing the second time. Not sure how it works, but maybe if the
>> timestamp of destFile.txt is equal to or larger than srcFile.txt than
>> nothing happens.
>>
>> So what I want is something like a generatedfile argument for exec. For
>> example:
>>
>> <exec executable="${java.home}/bin/keytool.exe"
>> generatedfile="${keystore}">
>> <arg value="-genkey"/>
>> <arg value="-alias"/>
>> <arg value="${alias}"/>
>> <arg value="-keyalg"/>
>> <arg value="RSA"/>
>> <arg value="-validity"/>
>> <arg value="36000"/>
>> <arg value="-keystore"/>
>> <arg value="${keystore}"/>
>> <arg value="-storepass"/>
>> <arg value="${storepass}"/>
>> <arg value="-keypass"/>
>> <arg value="${keypass}"/>
>> <arg value="-dname"/>
>> <arg value="${dname}"/>
>> </exec>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>> For additional commands, e-mail: user-help@ant.apache.org
>>
>>
>
> Scot P. Floess
> 27 Lake Royale
> Louisburg, NC 27549
>
> 252-478-8087 (Home)
> 919-754-4592 (Work)
>
> Chief Architect JPlate http://sourceforge.net/projects/jplate
> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>
> Architect Keros http://sourceforge.net/projects/keros
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>
--
--
David Weintraub
qazwart@gmail.com
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
Re: How to make exec not run by timestamp?
Posted by "Scot P. Floess" <sf...@nc.rr.com>.
You can try the following:
Stock Ant:
1) Wrap your call to exec in a target, and place an "if" on the target:
<project>
<condition property = "file.found">
<available file = "your.file"/>
</condition>
<target name="exec" if = "file.found">
<exec...>
...
</exec>
<touch file = "your.file"/>
</target>
</project>
2) Use AntContrib's if task:
<project>
<!-- include Ant Contrib here... -->
<if>
<available file = "your.file"/>
<then>
<exec...>
...
</exec>
<touch file = "your.file"/>
</then>
</if>
</project>
On Mon, 29 Dec 2008, removeps-generic@yahoo.com wrote:
> How can I make the exec task smart enough so that it won't do anything if the file generated by the task has already been created?
>
> For example,
>
> <copy file="srcFile.txt" tofile="destFile.txt" verbose="true"/>
>
> does nothing the second time. Not sure how it works, but maybe if the timestamp of destFile.txt is equal to or larger than srcFile.txt than nothing happens.
>
> So what I want is something like a generatedfile argument for exec. For example:
>
> <exec executable="${java.home}/bin/keytool.exe" generatedfile="${keystore}">
> <arg value="-genkey"/>
> <arg value="-alias"/>
> <arg value="${alias}"/>
> <arg value="-keyalg"/>
> <arg value="RSA"/>
> <arg value="-validity"/>
> <arg value="36000"/>
> <arg value="-keystore"/>
> <arg value="${keystore}"/>
> <arg value="-storepass"/>
> <arg value="${storepass}"/>
> <arg value="-keypass"/>
> <arg value="${keypass}"/>
> <arg value="-dname"/>
> <arg value="${dname}"/>
> </exec>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim
Architect Keros http://sourceforge.net/projects/keros
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org