curly brackets,  e.g.,   ${env.TUSCANY_HOME}, correctly expands to absolute
path.
In the following, ${tmp} expands to an absolute path.

<project name="calculator" default="show-cp">
   <property environment="env" />
   <property name="tuscanyHome" location="${env.TUSCANY_HOME}" />
   <property name="tuscanySCA" location="${tuscanyHome}/lib/sca-
api-r0.95-1.0-incubator-M2.jar" />

   <path id="scaClassPath">
       <pathelement location="${tuscanySCA}" />
   </path>

   <target name="show-cp">
       <property name="tmp" refid="scaClassPath" />
       <echo message="scaClasspath=${tmp}" />
   </target>

</project>

On 11/5/06, Simon Nash <[EMAIL PROTECTED]> wrote:

The sample readme.html instructions tell the user to run
   mvn dependency:unpack
to create a standalone distribution under the sample's target directory.
This means that each sample will have its own private copy of the
standalone runtime, and following these instructions for n samples will
create n copies of the standalone runtime.

I think it would be useful to describe how a user can have a single
installed copy of the standalone runtime and use it to run different
standalone applications (both samples and user applications).
Needing to have a dedicated standalone runtime for each standalone
application would seem rather surprising to many users.

So, in the best spirit of volunteering, I set out to do this.  In the
build.xml ant scripts that I am creating for the samples, I have been
assuming this mode of operation, with a single copy of the standalone
runtime installed in a directory of the user's choice, and a TUSCANY_HOME
environment variable set to the absolute path of this directory.
However, I have been having a lot of problems getting ant to treat
file paths derived from TUSCANY_HOME as absolute paths rather than as
relative paths from the current sample directory.

Here's an example of what I'm trying to do.  I've tried all kinds of
variations but they all have the same issue.

<project name="calculator" default="compile">
     <property environment="env"/>
     <property name="tuscanyHome" location="$(env.TUSCANY_HOME)"/>
     <property name="tuscanyLauncher"
location="$(tuscanyHome)/bin/launcher.jar"/>
     <property name="tuscanySCA" location="$(tuscanyHome)/lib/sca-
api-r0.95-1.0-incubator-M2.jar"/>

     <path id="scaClassPath">
         <pathelement location="$(tuscanySCA)"/>
     </path>

     <target name="init">
         <mkdir dir="target/classes"/>
     </target>

     <target name="compile" depends="init">
         <javac srcdir="src/main/java" destdir="target/classes" debug="on"
source="1.5" target="1.5">
             <classpath refid="scaClassPath"/>
         </javac>
         <copy todir="target/classes">
             <fileset dir="src/main/resources"/>
         </copy>
         <copy todir="target/classes/META-INF">
             <fileset dir='.' includes="LICENSE.txt,NOTICE.txt"/>
         </copy>
         <jar destfile="target/sample-calculator.jar"
basedir="target/classes">
             <manifest>
                 <attribute name="Main-Class" value="
calculator.CalculatorClient"/>
             </manifest>
         </jar>
     </target>

     <target name="run" depends="compile">
         <java jar="$(tuscanyLauncher)" fork="true">
             <arg value="target/sample-calculator.jar"/>
         </java>
        </target>

     <target name="clean">
         <delete quiet="true" includeemptydirs="true">
             <fileset dir="target"/>
         </delete>
     </target>
</project>

The problem is that uses of the properties $(tuscanySCA) and
$(tuscanyLauncher)
are treated as relative paths (prefixed by the current sample's basedir)
rather than absolute paths as intended.  If I hard-wire the absolute paths
in the <path> and <java> tasks, like so:

......... cut ..........
     <path id="scaClassPath">
         <pathelement path="d:/tuscany9/lib/sca-
api-r0.95-1.0-incubator-M2.jar"/>
     </path>
......... cut ..........
         <java jar="d:/tuscany9/bin/launcher.jar" fork="true">
             <arg value="target/sample-calculator.jar"/>
         </java>
......... cut ..........

then all works as intended, but it is clearly unaceptable to hard-wire
absolute paths in this way.

I spent a while googling to try to find a solution to this, and came
across
a few exchanges on the ant mailing lists that showed I am not the first to
run into this.  Surprisingly, no-one seemed to have a solution other than
suggestions to use "location" which I have tried with no success.

Can someone with ant experience point me in the right direction for a
solution, please?

   Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to