You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Richard Landon <RL...@youbet.com> on 2000/08/05 02:08:07 UTC
How to use $ in a ANT property value
How do you avoid ANT evaluation of the $ character within a macro as in:
<property name="helper.classes" value="Helper$1.class:Helper$2.classs"/>
The helper.classes value becomes Helper1.class Helper2.class, which is not
correct.
The correct value must include the $1: it's a valid Java classfile name.
Java compiler
produces it, so it must be!
Re: How to use $ in a ANT property value
Posted by Stefan Bodewig <bo...@bost.de>.
>>>>> "KP" == K Plummer <kp...@earthlink.net> writes:
KP> Is ant expanding away the preceeding $ on $$1 on the first macro
KP> (leaving $1) which becomes 1 on subsequent macro expansions?
Yes, $$ will simply be translated to $ by Ant, that's all. No further
processiong will be done by Ant.
I think, what you see is sh processing the $ sign you are sending on
the command line to the <exec> task. Maybe \$$ is what you want? Ant
woukld translate this to \$ and sh to $.
Stefan
Re: How to use $ in a ANT property value
Posted by K Plummer <kp...@earthlink.net>.
This does not seem to correct the problem. Here is a strippped version of
the build.xml and the ANT output of the execution.
ANT is making the evaluation of $$ same as $, or so it would appear. Is this
a problem of nesting during expansion of the
macros? From my stripped build.xml, the macro containing this macro is used
in serveral other macros. Is ant expanding away
the preceeding $ on $$1 on the first macro (leaving $1) which becomes 1 on
subsequent macro expansions? Can/should I preceed
with the appropriate number of $'s? That's cumbersome. With a shell script
for example,
# simple.sh
var="\$1"
for a in 1 2 3
do
eval x$a=${var}-\$$a
done
echo "x1 is" $x1
echo "x2 is" $x2
echo "x3 is" $x3
simple.sh TEST
x1 is TEST-1
x2 is TEST-2
x3 is TEST-3
but perhaps I ramble
<?xml version="1.0"?>
<!-- =================================================================== -->
<!-- Initial Electronic Wagering Build Script -->
<!-- =================================================================== -->
<project name="electronicwagering" default="core" basedir=".">
<!-- change this property to use a compiler other than javac. -->
<property name="build.compiler" value="classic"/>
<!-- The destination directory for the build -->
<property name="ewager.build" value="../build"/>
<property name="ewager.src" value="."/>
<!-- The destination directory for all the compiled classes. -->
<property name="ewager.classbindir" value="${ewager.build}/lib/classes"/>
<property name="ewager.srcdocroot" value="${ewager.src}/docroot"/>
<!-- The destination directory for all the web-documents. -->
<property name="ewager.destdocroot" value="${ewager.build}/docroot"/>
<!-- The classpath used for building the workspace. -->
<property name="ewager.classpath"
value="${ewager.classbindir}:${j2ee.home}/lib/j2ee.jar"/>
<property name="utilmisc.classes"
value="com/youbet/ewager/services/ESocketServiceHelper$$1.class:com/youbet/e
wager/services/ESocketServiceHelper$$2.class:com/youbet/ewager/util/AspectAd
aptor$$1.class"/>
<property name="util.classes" value="${utilmisc.classes}"/>
<property name="all.classes" value="${util.classes}}"/>
<property name="ewager.ejbjar" value="${ewager.build}/lib/ewagerEjb.jar"/>
<property name="ewager.ear" value="${ewager.build}/lib/ewager.ear"/>
<property name="ejbjar.contents" value="${all.classes}"/>
<property name="ewager.ear" value="${ewager.build}/lib/ewager.ear"/>
<property name="ear.contents" value="${ewager.ejbjar}"/>
<target name="compile_classes">
<mkdir dir="${ewager.classbindir}"/>
<javac srcdir="${ewager.src}/com"
destdir="${ewager.classbindir}"
classpath="${ewager.classpath}"
debug="on"
deprecation="on"
/>
</target>
<target name="ejbjar" depends="compile_classes">
<java classname="com.sun.enterprise.tools.packager.Main"
args="-ejbJar ${ewager.classbindir} ${ejbjar.contents}
ewager_ejb.xml ${ewager.ejbjar}"/>
</target>
<target name="ear">
<java classname="com.sun.enterprise.tools.packager.Main"
args="-enterpriseArchive ${ear.contents} ewager ${ewager.ear}"/>
<java classname="com.sun.enterprise.tools.packager.Main"
args="-setRuntime ${ewager.ear} ewager_ejbruntime.xml"/>
</target>
<target name="core" depends="compile_classes, ejbjar" />
<target name="all" depends="ear" />
<target name="clean">
<deltree dir="${ewager.build}"/>
</target>
</project>
[I:/ElectronicWagering/src] . build.sh core
Buildfile: build.xml
Project base dir set to: I:\ElectronicWagering\src
Executing Target: compile_classes
Compiling 76 source files to I:\ElectronicWagering\build\lib\classes
I:\ElectronicWagering\src\com\YouBet\ewager\services\ejb\ESocketServiceEJB.j
ava:149: Note: The method java.lang.String readLine() in class
java.io.DataInputStream has been deprecated.
response= m_input.readLine();
^
Note:
I:\ElectronicWagering\src\com\YouBet\ewager\services\ejb\ESocketServiceEJB.j
ava uses or overrides a deprecated API. Please consult the documentation
for a better alternative.
1 warning
Executing Target: ejbjar
Exception during packaging:
..\build\lib\classes\com\youbet\ewager\services\ESocketServiceHelper1.class
(The system cannot find the file specified)
java.io.FileNotFoundException:
..\build\lib\classes\com\youbet\ewager\services\ESocketServiceHelper1.class
(The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:68)
at java.io.FileInputStream.<init>(FileInputStream.java:99)
at
com.sun.enterprise.deployment.EjbBundleArchivist.createPackage(EjbBundleArch
ivist.java:137)
at
com.sun.enterprise.tools.packager.ComponentPackager.packageEjbArchive(Compon
entPackager.java:67)
at com.sun.enterprise.tools.packager.Main.main(Main.java:105)
at java.lang.reflect.Method.invoke(Native Method)
at org.apache.tools.ant.taskdefs.Java.run(Java.java:168)
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:109)
at org.apache.tools.ant.Target.execute(Target.java, Compiled Code)
at org.apache.tools.ant.Project.runTarget(Project.java:675)
at org.apache.tools.ant.Project.executeTarget(Project.java, Compiled
Code)
at org.apache.tools.ant.Main.runBuild(Main.java, Compiled Code)
at org.apache.tools.ant.Main.main(Main.java, Compiled Code)
[I:/ElectronicWagering/src]
----- Original Message -----
From: "Barrie Treloar" <Ba...@camtech.com.au>
To: <an...@jakarta.apache.org>
Sent: Saturday, August 05, 2000 2:53 AM
Subject: Re: How to use $ in a ANT property value
> On Fri, 4 Aug 2000, Richard Landon wrote:
>
>
> > How do you avoid ANT evaluation of the $ character within a macro as in:
>
> Use $$ instead. This should be in the documentation but it is not.
>
> e.g:
> <property name="helper.classes" value="Helper$$1.class:Helper$$2.classs"/>
>
> <target name="tryme">
> <echo message="${helper.classes}"/>
> </target>
>
> Barrie
> --
> Barrie Treloar
> ____________________________________________________________________
>
> Barrie Treloar Phone: +61 8 8303 3300
> Senior Analyst/Programmer Fax: +61 8 8303 4403
> Electronic Commerce Division Email: barrie@camtech.com.au
> Camtech (SA) Pty Ltd http://www.camtech.com.au
> --- Level 8, 10 Pulteney Street, Adelaide SA 5000, Australia. ---
> ____________________________________________________________________
>
>
>
Re: How to use $ in a ANT property value
Posted by Barrie Treloar <Ba...@camtech.com.au>.
On Fri, 4 Aug 2000, Richard Landon wrote:
> How do you avoid ANT evaluation of the $ character within a macro as in:
Use $$ instead. This should be in the documentation but it is not.
e.g:
<property name="helper.classes" value="Helper$$1.class:Helper$$2.classs"/>
<target name="tryme">
<echo message="${helper.classes}"/>
</target>
Barrie
--
Barrie Treloar
____________________________________________________________________
Barrie Treloar Phone: +61 8 8303 3300
Senior Analyst/Programmer Fax: +61 8 8303 4403
Electronic Commerce Division Email: barrie@camtech.com.au
Camtech (SA) Pty Ltd http://www.camtech.com.au
--- Level 8, 10 Pulteney Street, Adelaide SA 5000, Australia. ---
____________________________________________________________________