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