Grokbase Groups Ant user July 2008
FAQ
Hi,

I am having an issue trying to execute the cvs command in an Ant script
using the built in <cvs> task element. In using this, I didn't know how
to place the status information into a property. So, I decided to use the
<exec> task element. Below is the code I am executing:

<if>
<or>
<equals arg1="${os.name}" arg2="Windows 2000"/>
<equals arg1="${os.name}" arg2="Windows XP"/>
</or>
<then>
<exec executable="cmd" failonerror="true"
outputproperty="build.xml.version.line">
<arg line='/c "cvs status
${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
findstr Working | findstr revision"'/>
</exec>
</then>
<else>
<exec executable="cvs" failonerror="true"
outputproperty="build.xml.version.line">
<arg line="-d${common.setup.cvsRoot} status
${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
'Working'"/>
</exec>
</else>
</if>
<propertyregex property="build.xml.version"
input="${build.xml.version.line}"
regexp="([0-9\.]*)$"
select="\1"
casesensitive="false"
/>
<echo message="XML file version info LINE =
'${build.xml.version.line}'"/>
<echo message="XML file version info = '${build.xml.version}'"/>

When I run the code, I get the following error:

cvs.get.wfversion:
[echo] 2008/07/25 09:00:22 Get CVS version information to
generate the wfversion value.
[echo] CVS Get the XML file version info:
'${common.setup.source.clientpath}/Demo/Demo/Demo.xml'

BUILD FAILED
/scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:1364:
Following error occured while executing this line
/scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:498: exec
returned: 1

I have been looking at the Ant book I purchased (Pro Apache Ant) and
several websites for error codes returned from the <exec> task element,
but have come up short. As stated earlier, when I tried to use the <cvs>
task element, I get stuck when I try to place the information into
property. Below is the code using the <cvs> task:

<if>
<or>
<equals arg1="${os.name}" arg2="Windows 2000"/>
<equals arg1="${os.name}" arg2="Windows XP"/>
</or>
<then>
<exec executable="cmd" failonerror="true"
outputproperty="build.xml.version.line">
<arg line='/c "cvs status
${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
findstr Working | findstr revision"'/>
</exec>
</then>
<else>
<cvs
cvsRoot="${common.setup.cvsRoot}"
command="status
${app.lar.client.path}/${app.lar.client.source.filename} | grep 'Working'"
failonerror="true"
/>
</else>
</if>
<propertyregex property="build.xml.version"
input="${build.xml.version.line}"
regexp="([0-9\.]*)$"
select="\1"
casesensitive="false"
/>
<echo message="XML file version info LINE =
'${build.xml.version.line}'"/>
<echo message="XML file version info = '${build.xml.version}'"/>

At this point, I didn't know how to put the info returned into a property.
I know I could send it to a temp file, but I didn't want to add another
step into the process. Any help would be greatly appreciated.

Thanks,

Ray Harper, Jr.
Software Engineer II
Wachovia Corporation
1525 West WT Harris Blvd. Charlotte, NC, 28270
Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

CONFIDENTIALITY NOTICE:
The information accompanying this email transmission may contain
confidential or legally privileged information that is intended only for
the use of the individual or entity named in this message. If you are not
the intended recipient, you are hereby notified that any disclosure,
copying, distribution or reliance upon the contents of this email is
strictly prohibited. If you receive this email in error, please notify the
sender immediately.

Search Discussions

  • Krzysieq at Jul 25, 2008 at 2:34 pm
    The code pieces You pasted are quite lenghty, and most of my experience
    comes from unix boxes, but I guess there might be a similarity.


    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.
    version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>

    This has no right to do whatever it is You want it to - at least on linux it
    wouldn't. There's an explanation on the ant website somewhere, so I won't
    repeat all of it. In brief - if You want to pipe output to another program,
    You'd have to exec not the command You want, but the command environment. So
    in my case this usually was something like:

    <exec executable="bash"><arg line="-c 'do_stuff |
    do_some_more_stuff'"/></exec>

    Otherwise the redirection of output/error streams doesn't work. At least
    that's on linux, but I imagine it will be the same on windows. Besides this,
    I don't see why You might not be getting what You want. Hope I helped a
    little.

    Cheers,
    Chris

    2008/7/25 <ray.harper@wachovia.com>
    Hi,

    I am having an issue trying to execute the cvs command in an Ant script
    using the built in <cvs> task element. In using this, I didn't know how
    to place the status information into a property. So, I decided to use the
    <exec> task element. Below is the code I am executing:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>
    </exec>
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    When I run the code, I get the following error:

    cvs.get.wfversion:
    [echo] 2008/07/25 09:00:22 Get CVS version information to
    generate the wfversion value.
    [echo] CVS Get the XML file version info:
    '${common.setup.source.clientpath}/Demo/Demo/Demo.xml'

    BUILD FAILED
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:1364:
    Following error occured while executing this line
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:498: exec
    returned: 1

    I have been looking at the Ant book I purchased (Pro Apache Ant) and
    several websites for error codes returned from the <exec> task element,
    but have come up short. As stated earlier, when I tried to use the <cvs>
    task element, I get stuck when I try to place the information into
    property. Below is the code using the <cvs> task:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <cvs
    cvsRoot="${common.setup.cvsRoot}"
    command="status
    ${app.lar.client.path}/${app.lar.client.source.filename} | grep 'Working'"
    failonerror="true"
    />
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    At this point, I didn't know how to put the info returned into a property.
    I know I could send it to a temp file, but I didn't want to add another
    step into the process. Any help would be greatly appreciated.

    Thanks,

    Ray Harper, Jr.
    Software Engineer II
    Wachovia Corporation
    1525 West WT Harris Blvd. Charlotte, NC, 28270
    Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

    CONFIDENTIALITY NOTICE:
    The information accompanying this email transmission may contain
    confidential or legally privileged information that is intended only for
    the use of the individual or entity named in this message. If you are not
    the intended recipient, you are hereby notified that any disclosure,
    copying, distribution or reliance upon the contents of this email is
    strictly prohibited. If you receive this email in error, please notify the
    sender immediately.
  • Ray Harper at Jul 25, 2008 at 3:05 pm
    First, let me apologize for the lengthy code. I was trying to put in as
    much information as possible.

    I'm actually trying to run this on a UNIX server. I'm new to the UNIX
    environment, so correct me if I am wrong, but if I use the bash command,
    will I not have to create and execute some sort of shell script? If this
    is the case, I'm not sure if this will work for me. All I am trying to do
    is execute a the cvs status command. Below is what I am trying to
    accomplish if I was doing this from the command line:

    cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
    opt/usr/bin/testfile.xml

    This will return the following info:

    ===================================================================
    File: Demo.xml Status: Up-to-date

    Working revision: 1.8
    Repository revision: 1.8
    /cvs/1LCW-LiveCycle_Workflow/1LCW_Pilot/Customer/Demo/Demo/Demo.xml,v
    Sticky Tag: c0467215_1LCW_Demo_07-22-08_1300_ReadyITE
    (revision: 1.8)
    Sticky Date: (none)
    Sticky Options: (none)

    All I am trying to get is the Working revision line and place it into a
    property. The following line:

    cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
    opt/usr/bin/testfile.xml | grep 'Working'

    returns this:

    Working revision: 1.8

    I'm trying to take the line above and place it into a property so I can
    later parse it to find the latest revision number. Hopefully, this helps
    and clarifies what I am doing.

    Thanks,

    Ray Harper, Jr.
    Software Engineer II
    Wachovia Corporation
    1525 West WT Harris Blvd. Charlotte, NC, 28270
    Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

    CONFIDENTIALITY NOTICE:
    The information accompanying this email transmission may contain
    confidential or legally privileged information that is intended only for
    the use of the individual or entity named in this message. If you are not
    the intended recipient, you are hereby notified that any disclosure,
    copying, distribution or reliance upon the contents of this email is
    strictly prohibited. If you receive this email in error, please notify the
    sender immediately.




    Krzysieq <krzysieq@gazeta.pl>
    07/25/2008 10:33 AM
    Please respond to
    "Ant Users List" <user@ant.apache.org>


    To
    "Ant Users List" <user@ant.apache.org>
    cc

    Subject
    Re: Error returned using <exec> task






    The code pieces You pasted are quite lenghty, and most of my experience
    comes from unix boxes, but I guess there might be a similarity.


    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.
    version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>

    This has no right to do whatever it is You want it to - at least on linux
    it
    wouldn't. There's an explanation on the ant website somewhere, so I won't
    repeat all of it. In brief - if You want to pipe output to another
    program,
    You'd have to exec not the command You want, but the command environment.
    So
    in my case this usually was something like:

    <exec executable="bash"><arg line="-c 'do_stuff |
    do_some_more_stuff'"/></exec>

    Otherwise the redirection of output/error streams doesn't work. At least
    that's on linux, but I imagine it will be the same on windows. Besides
    this,
    I don't see why You might not be getting what You want. Hope I helped a
    little.

    Cheers,
    Chris

    2008/7/25 <ray.harper@wachovia.com>
    Hi,

    I am having an issue trying to execute the cvs command in an Ant script
    using the built in <cvs> task element. In using this, I didn't know how
    to place the status information into a property. So, I decided to use the
    <exec> task element. Below is the code I am executing:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>
    </exec>
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    When I run the code, I get the following error:

    cvs.get.wfversion:
    [echo] 2008/07/25 09:00:22 Get CVS version information to
    generate the wfversion value.
    [echo] CVS Get the XML file version info:
    '${common.setup.source.clientpath}/Demo/Demo/Demo.xml'

    BUILD FAILED
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:1364:
    Following error occured while executing this line
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:498: exec
    returned: 1

    I have been looking at the Ant book I purchased (Pro Apache Ant) and
    several websites for error codes returned from the <exec> task element,
    but have come up short. As stated earlier, when I tried to use the <cvs>
    task element, I get stuck when I try to place the information into
    property. Below is the code using the <cvs> task:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <cvs
    cvsRoot="${common.setup.cvsRoot}"
    command="status
    ${app.lar.client.path}/${app.lar.client.source.filename} | grep
    'Working'"
    failonerror="true"
    />
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    At this point, I didn't know how to put the info returned into a property.
    I know I could send it to a temp file, but I didn't want to add another
    step into the process. Any help would be greatly appreciated.

    Thanks,

    Ray Harper, Jr.
    Software Engineer II
    Wachovia Corporation
    1525 West WT Harris Blvd. Charlotte, NC, 28270
    Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

    CONFIDENTIALITY NOTICE:
    The information accompanying this email transmission may contain
    confidential or legally privileged information that is intended only for
    the use of the individual or entity named in this message. If you are not
    the intended recipient, you are hereby notified that any disclosure,
    copying, distribution or reliance upon the contents of this email is
    strictly prohibited. If you receive this email in error, please notify the
    sender immediately.
  • Krzysieq at Jul 25, 2008 at 3:54 pm
    Don't apologize, I was just joking a bit. Bash is a command-interpreting
    program (shell). It can interpret an arbitrary number of commands, which
    obviously includes one. What You wrote before suggested that You want to
    pipe the ouput of the cvs command to grep. This can only be done if You use
    a program like bash as the value of executable attribute, and pass it in the
    -c parameter the actual command You want to execute. It is in fact a shell
    script, albeit a very simple one. Hope it helps.

    Cheers,
    Chris

    2008/7/25 <ray.harper@wachovia.com>
    First, let me apologize for the lengthy code. I was trying to put in as
    much information as possible.

    I'm actually trying to run this on a UNIX server. I'm new to the UNIX
    environment, so correct me if I am wrong, but if I use the bash command,
    will I not have to create and execute some sort of shell script? If this
    is the case, I'm not sure if this will work for me. All I am trying to do
    is execute a the cvs status command. Below is what I am trying to
    accomplish if I was doing this from the command line:

    cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
    opt/usr/bin/testfile.xml

    This will return the following info:

    ===================================================================
    File: Demo.xml Status: Up-to-date

    Working revision: 1.8
    Repository revision: 1.8
    /cvs/1LCW-LiveCycle_Workflow/1LCW_Pilot/Customer/Demo/Demo/Demo.xml,v
    Sticky Tag: c0467215_1LCW_Demo_07-22-08_1300_ReadyITE
    (revision: 1.8)
    Sticky Date: (none)
    Sticky Options: (none)

    All I am trying to get is the Working revision line and place it into a
    property. The following line:

    cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
    opt/usr/bin/testfile.xml | grep 'Working'

    returns this:

    Working revision: 1.8

    I'm trying to take the line above and place it into a property so I can
    later parse it to find the latest revision number. Hopefully, this helps
    and clarifies what I am doing.

    Thanks,

    Ray Harper, Jr.
    Software Engineer II
    Wachovia Corporation
    1525 West WT Harris Blvd. Charlotte, NC, 28270
    Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

    CONFIDENTIALITY NOTICE:
    The information accompanying this email transmission may contain
    confidential or legally privileged information that is intended only for
    the use of the individual or entity named in this message. If you are not
    the intended recipient, you are hereby notified that any disclosure,
    copying, distribution or reliance upon the contents of this email is
    strictly prohibited. If you receive this email in error, please notify the
    sender immediately.




    Krzysieq <krzysieq@gazeta.pl>
    07/25/2008 10:33 AM
    Please respond to
    "Ant Users List" <user@ant.apache.org>


    To
    "Ant Users List" <user@ant.apache.org>
    cc

    Subject
    Re: Error returned using <exec> task






    The code pieces You pasted are quite lenghty, and most of my experience
    comes from unix boxes, but I guess there might be a similarity.


    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.
    version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>

    This has no right to do whatever it is You want it to - at least on linux
    it
    wouldn't. There's an explanation on the ant website somewhere, so I won't
    repeat all of it. In brief - if You want to pipe output to another
    program,
    You'd have to exec not the command You want, but the command environment.
    So
    in my case this usually was something like:

    <exec executable="bash"><arg line="-c 'do_stuff |
    do_some_more_stuff'"/></exec>

    Otherwise the redirection of output/error streams doesn't work. At least
    that's on linux, but I imagine it will be the same on windows. Besides
    this,
    I don't see why You might not be getting what You want. Hope I helped a
    little.

    Cheers,
    Chris

    2008/7/25 <ray.harper@wachovia.com>
    Hi,

    I am having an issue trying to execute the cvs command in an Ant script
    using the built in <cvs> task element. In using this, I didn't know how
    to place the status information into a property. So, I decided to use the
    <exec> task element. Below is the code I am executing:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <exec executable="cvs" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line="-d${common.setup.cvsRoot} status
    ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
    'Working'"/>
    </exec>
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    When I run the code, I get the following error:

    cvs.get.wfversion:
    [echo] 2008/07/25 09:00:22 Get CVS version information to
    generate the wfversion value.
    [echo] CVS Get the XML file version info:
    '${common.setup.source.clientpath}/Demo/Demo/Demo.xml'

    BUILD FAILED
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:1364:
    Following error occured while executing this line
    /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:498: exec
    returned: 1

    I have been looking at the Ant book I purchased (Pro Apache Ant) and
    several websites for error codes returned from the <exec> task element,
    but have come up short. As stated earlier, when I tried to use the <cvs>
    task element, I get stuck when I try to place the information into
    property. Below is the code using the <cvs> task:

    <if>
    <or>
    <equals arg1="${os.name}" arg2="Windows 2000"/>
    <equals arg1="${os.name}" arg2="Windows XP"/>
    </or>
    <then>
    <exec executable="cmd" failonerror="true"
    outputproperty="build.xml.version.line">
    <arg line='/c "cvs status
    ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
    findstr Working | findstr revision"'/>
    </exec>
    </then>
    <else>
    <cvs
    cvsRoot="${common.setup.cvsRoot}"
    command="status
    ${app.lar.client.path}/${app.lar.client.source.filename} | grep
    'Working'"
    failonerror="true"
    />
    </else>
    </if>
    <propertyregex property="build.xml.version"
    input="${build.xml.version.line}"
    regexp="([0-9\.]*)$"
    select="\1"
    casesensitive="false"
    />
    <echo message="XML file version info LINE =
    '${build.xml.version.line}'"/>
    <echo message="XML file version info = '${build.xml.version}'"/>

    At this point, I didn't know how to put the info returned into a property.
    I know I could send it to a temp file, but I didn't want to add another
    step into the process. Any help would be greatly appreciated.

    Thanks,

    Ray Harper, Jr.
    Software Engineer II
    Wachovia Corporation
    1525 West WT Harris Blvd. Charlotte, NC, 28270
    Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077

    CONFIDENTIALITY NOTICE:
    The information accompanying this email transmission may contain
    confidential or legally privileged information that is intended only for
    the use of the individual or entity named in this message. If you are not
    the intended recipient, you are hereby notified that any disclosure,
    copying, distribution or reliance upon the contents of this email is
    strictly prohibited. If you receive this email in error, please notify the
    sender immediately.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupuser @
categoriesant
postedJul 25, '08 at 2:16p
activeJul 25, '08 at 3:54p
posts4
users2
websiteant.apache.org

2 users in discussion

Ray Harper: 2 posts Krzysieq: 2 posts

People

Translate

site design / logo © 2022 Grokbase