aboutsummaryrefslogtreecommitdiffstats
path: root/docs/examples/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/build.xml')
-rw-r--r--docs/examples/build.xml458
1 files changed, 458 insertions, 0 deletions
diff --git a/docs/examples/build.xml b/docs/examples/build.xml
new file mode 100644
index 000000000..958c72727
--- /dev/null
+++ b/docs/examples/build.xml
@@ -0,0 +1,458 @@
+
+<!-- ========================================================================= -->
+<!-- Copyright (c) 1999-2001 Xerox Corporation, -->
+<!-- 2002 Palo Alto Research Center, Incorporated (PARC). -->
+<!-- All rights reserved. -->
+<!-- This program and the accompanying materials are made available -->
+<!-- under the terms of the Eclipse Public License v 2.0 -->
+<!-- which accompanies this distribution and is available at -->
+<!-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt -->
+<!-- -->
+<!-- Contributors: -->
+<!-- Xerox/PARC initial implementation -->
+<!-- ========================================================================= -->
+
+<project name="aspectj-examples" default="spacewar" basedir=".">
+
+ <target name="info" >
+ <echo>
+ This script builds the AspectJ examples.
+
+ Relevant targets:
+ spacewar build and run spacewar with debugging (default)
+ all build and run each example
+ {example} build and run any {example}
+ (use -projecthelp to list {example} names)
+ tracing-bc use AspectJ 1.1 bytecode weaving to build tracing example
+
+ Setup:
+ - Run from the doc/examples directory in your AspectJ distribution.
+ The tasks in ../../lib/aspectjtools.jar are used automatically.
+
+ Variants:
+ - To avoid running (i.e., compile only), define variable "norun"
+ - To define a variable, use the Ant -D option - e.g., on Windows:
+
+ ant -f build.xml -DJAVA_HOME=c:\jdk1.3.1 -Dnorun=skip
+
+ </echo>
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- setup and cleanup targets -->
+ <!-- ============================================================= -->
+
+ <target name="clean" depends="init"
+ description="clean and create classes/jar dir, .ajesym files">
+ <delete quiet="on" dir="${classes.dir}"/>
+ <delete quiet="on" dir="${jar.dir}"/>
+ <delete quiet="on">
+ <fileset dir="${example.dir}" includes="**/*.ajesym"/>
+ </delete>
+ <mkdir dir="${classes.dir}"/>
+ <mkdir dir="${jar.dir}"/>
+ </target>
+
+ <target name="init" depends="init.variables,init.taskdefs"/>
+
+ <target name="init.variables"
+ description="init variables">
+
+ <!-- build.compiler value to pick up our CompilerAdapter for javac -->
+ <property name="ajc.adapter"
+ value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/>
+
+ <!-- required directories - run from examples or predefine -->
+ <property name="example.dir"
+ location="${basedir}"/>
+ <property name="aspectj.lib.dir"
+ location="${basedir}/../../lib"/>
+
+ <!-- required libraries - install or predefine -->
+ <property name="aspectjrt.jar"
+ location="${aspectj.lib.dir}/aspectjrt.jar"/>
+ <property name="aspectjtools.jar"
+ location="${aspectj.lib.dir}/aspectjtools.jar"/>
+ <property name="aspectjweaver.jar"
+ location="${aspectj.lib.dir}/aspectjweaver.jar"/>
+
+ <!-- created directories -->
+ <property name="classes.dir"
+ location="${example.dir}/classes"/>
+ <property name="jar.dir"
+ location="${example.dir}/jars"/>
+
+ <!-- checking required libraries -->
+ <available file="${aspectjtools.jar}"
+ property="aspectjtools.jar.available"/>
+ <available file="${aspectjrt.jar}"
+ property="aspectjrt.jar.available"/>
+
+ <property name="example.packages"
+ value="bean, coordination, evolution, figures, figures.gui,
+ helloworld, icount, icount.lib, introduction,
+ observer, shadow, shadow.version1, shadow.version2,
+ spacewar, telecom, telecom.version1, timeserver, tjp,
+ tracing, tracing.lib tracing.version1, tracing.version2,
+ tracing.version3"/>
+ </target>
+
+ <target name="init.taskdefs" depends="init.variables,
+ aspectjtools.jar.available,
+ aspectjrt.jar.available"
+ unless="taskdefs.init">
+ <!-- sets name of new task to iajc, old task to ajc -->
+ <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
+ <classpath>
+ <pathelement path="${aspectjtools.jar}"/>
+ </classpath>
+ </taskdef>
+ <property name="taskdefs.init" value="true"/>
+ </target>
+
+ <!-- targets to fail unless required libraries available -->
+
+ <target name="aspectjrt.jar.available" depends="init.variables"
+ unless="aspectjrt.jar.available" >
+ <fail message="expecting aspectjrt.jar at ${aspectjrt.jar}"/>
+ </target>
+
+ <target name="aspectjtools.jar.available" depends="init.variables"
+ unless="aspectjtools.jar.available" >
+ <fail message="expecting aspectjtools.jar at ${aspectjtools.jar}"/>
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- these targets compile and run any example -->
+ <!-- ============================================================= -->
+ <target name="Ajx" depends="init"
+ description="compile {list} and run {class} of example">
+ <echo message="##### Ajx list=${list} class=${class}" />
+ <antcall target="clean" />
+ <!-- can use ajc or iajc here -->
+ <iajc destdir="${classes.dir}" argfiles="${list}"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ classpath="${aspectjrt.jar}"/>
+
+ <antcall target="Ajx-run" >
+ <param name="class" value="${class}"/>
+ </antcall>
+
+ </target>
+
+ <target name="Ajx-run"
+ description="run {class} unless {norun} is set"
+ unless="norun" >
+ <echo message="##### Ajx-run list=${list} class=${class}" />
+ <java classname="${class}" fork="yes">
+ <classpath>
+ <pathelement path="${classes.dir}"/>
+ <pathelement path="${aspectjrt.jar}"/>
+ </classpath>
+ </java>
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- example targets -->
+ <!-- ============================================================= -->
+ <target name="all"
+ description="build and run all examples"
+ depends="bean,intro,intro-clone,intro-compare,intro-hash,
+ observer,spacewar,spacewar-demo,telecom,
+ telecom-timing,tracing-none,tracing-1,
+ tracing-2,tracing-3,tracing-lt,tjp"/>
+
+ <target name="nonGui"
+ description="build and run non-GUI examples"
+ depends="bean,intro,intro-clone,intro-compare,intro-hash,
+ telecom,telecom-timing,tracing-none,tracing-1,
+ tracing-2,tracing-3,tracing-lt,tjp"/>
+
+ <target name="bean"
+ description="build bean example">
+ <antcall target="Ajx">
+ <param name="list" value="bean/files.lst"/>
+ <param name="class" value="bean.Demo"/>
+ </antcall>
+ </target>
+
+ <target name="intro"
+ description="build inter-type declaration example">
+ <antcall target="Ajx">
+ <param name="list" value="introduction/files.lst"/>
+ <param name="class" value="introduction.Point"/>
+ </antcall>
+ </target>
+
+ <target name="intro-clone"
+ description="build inter-type declaration (clone) example">
+ <antcall target="Ajx">
+ <param name="list" value="introduction/files.lst"/>
+ <param name="class" value="introduction.CloneablePoint"/>
+ </antcall>
+ </target>
+
+ <target name="intro-compare"
+ description="build inter-type declaration (Comparable) example">
+ <antcall target="Ajx">
+ <param name="list" value="introduction/files.lst"/>
+ <param name="class" value="introduction.ComparablePoint"/>
+ </antcall>
+ </target>
+
+ <target name="intro-hash"
+ description="build inter-type declaration (hashcode) example">
+ <antcall target="Ajx">
+ <param name="list" value="introduction/files.lst"/>
+ <param name="class" value="introduction.HashablePoint"/>
+ </antcall>
+ </target>
+
+ <target name="observer"
+ description="build observer example">
+ <antcall target="Ajx">
+ <param name="list" value="observer/files.lst"/>
+ <param name="class" value="observer.Demo"/>
+ </antcall>
+ </target>
+
+ <target name="spacewar"
+ description="build spacewar debug example">
+ <antcall target="Ajx">
+ <param name="list" value="spacewar/debug.lst"/>
+ <param name="class" value="spacewar.Game"/>
+ </antcall>
+ </target>
+
+ <target name="spacewar-demo"
+ description="build spacewar demo (no debug) example">
+ <antcall target="Ajx">
+ <param name="list" value="spacewar/demo.lst"/>
+ <param name="class" value="spacewar.Game"/>
+ </antcall>
+ </target>
+
+ <target name="telecom"
+ description="build telecom basic example">
+ <antcall target="Ajx">
+ <param name="list" value="telecom/basic.lst"/>
+ <param name="class" value="telecom.BasicSimulation"/>
+ </antcall>
+ </target>
+
+ <target name="telecom-billing"
+ description="build telecom billing example">
+ <antcall target="Ajx">
+ <param name="list" value="telecom/billing.lst"/>
+ <param name="class" value="telecom.BillingSimulation"/>
+ </antcall>
+ </target>
+
+ <target name="telecom-timing"
+ description="build telecome timing example">
+ <antcall target="Ajx">
+ <param name="list" value="telecom/timing.lst"/>
+ <param name="class" value="telecom.TimingSimulation"/>
+ </antcall>
+ </target>
+
+ <target name="tjp"
+ description="build thisJoinPoint example">
+ <antcall target="Ajx">
+ <param name="list" value="tjp/files.lst"/>
+ <param name="class" value="tjp.Demo"/>
+ </antcall>
+ </target>
+
+ <target name="tracing-none"
+ description="build tracing (base) example">
+ <antcall target="Ajx">
+ <param name="list" value="tracing/notrace.lst"/>
+ <param name="class" value="tracing.ExampleMain"/>
+ </antcall>
+ </target>
+
+ <target name="tracing-1"
+ description="build tracing (version 1) example">
+ <antcall target="Ajx">
+ <param name="list" value="tracing/tracev1.lst"/>
+ <param name="class" value="tracing.version1.TraceMyClasses"/>
+ </antcall>
+ </target>
+
+ <target name="tracing-2"
+ description="build tracing (version 2) example">
+ <antcall target="Ajx">
+ <param name="list" value="tracing/tracev2.lst"/>
+ <param name="class" value="tracing.version2.TraceMyClasses"/>
+ </antcall>
+ </target>
+
+ <target name="tracing-3"
+ description="build tracing (version 3) example">
+ <antcall target="Ajx">
+ <param name="list" value="tracing/tracev3.lst"/>
+ <param name="class" value="tracing.version3.TraceMyClasses"/>
+ </antcall>
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- do tracing example using compiler adapter -->
+ <!-- ============================================================= -->
+ <target name="tracing-adapter" depends="init"
+ description="tracing example compiled via javac task">
+ <antcall target="clean" />
+ <!-- to fork, set adapter.fork=true
+ and put aspectjtools.jar on ant classpath -->
+ <javac destdir="${classes.dir}"
+ fork="${adapter.fork}">
+ <src path="${example.dir}"/>
+ <include name="tracing/*.java"/>
+
+ <!-- compilerarg's ignored unless using our compiler adapter -->
+ <compilerarg compiler="${ajc.adapter}"
+ line="-verbose -Xlint -proceedOnError"/>
+ <!-- use separate values if a path might have spaces -->
+ <compilerarg compiler="${ajc.adapter}"
+ value="-classpath"/>
+ <compilerarg compiler="${ajc.adapter}"
+ value="${aspectjrt.jar}"/>
+ <compilerarg compiler="${ajc.adapter}"
+ path="${example.dir}/tracing/version3/Trace.java"/>
+ <compilerarg compiler="${ajc.adapter}"
+ path="${example.dir}/tracing/version3/TraceMyClasses.java"/>
+ </javac>
+ </target>
+
+ <target name="tracing-adapter-ajc" depends="init"
+ description="tracing example compiled using ajc via compiler adapter">
+ <!-- aspectjtools.jar must be on system/ant classpath -->
+ <antcall target="tracing-adapter">
+ <param name="build.compiler" value="${ajc.adapter}"/>
+ </antcall>
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- do tracing example with 1.1 bytecode weaving (binary aspects) -->
+ <!-- (and use fork/forkclasspath to avoid Eclipse 2.x bug) -->
+ <!-- ============================================================= -->
+ <target name="tracing-bc" depends="init"
+ description="tracing example with bytecode weaving (binary aspects)">
+ <antcall target="clean" />
+
+ <!-- build application classes -->
+ <iajc outjar="${jar.dir}/tracingApp.jar"
+ classpath="${aspectjrt.jar}"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ verbose="off">
+ <src path="${example.dir}"/>
+ <include name="tracing/*.java" />
+ </iajc>
+
+ <!-- test standalone application by running without tracing -->
+ <echo message="---------- running without tracing - START"/>
+ <java classname="tracing.ExampleMain">
+ <classpath>
+ <pathelement path="${aspectjrt.jar}"/>
+ <pathelement path="${jar.dir}/tracingApp.jar"/>
+ </classpath>
+ </java>
+ <echo message="---------- running without tracing - FINISH "/>
+
+ <!-- Build a read-only tracing library -->
+ <iajc outjar="${jar.dir}/tracingLib.jar"
+ classpath="${aspectjrt.jar}"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ verbose="off">
+ <src path="${example.dir}"/>
+ <include name="tracing/version3/Trace.java" />
+ </iajc>
+
+ <!-- weave them -->
+ <!-- This example uses a concrete aspect in source form, -->
+ <!-- but the aspects could be written to be binary only. -->
+ <iajc outjar="${jar.dir}/tracedApp.jar"
+ inpath="${jar.dir}/tracingApp.jar"
+ aspectpath="${jar.dir}/tracingLib.jar"
+ classpath="${aspectjrt.jar}"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ verbose="off">
+ <src path="${example.dir}"/>
+ <include name="tracing/version3/TraceMyClasses.java" />
+ </iajc>
+
+ <!-- run with tracing -->
+ <echo message="---------- running with tracing - START"/>
+ <java classname="tracing.version3.TraceMyClasses">
+ <classpath>
+ <pathelement path="${aspectjrt.jar}"/>
+ <pathelement path="${jar.dir}/tracingLib.jar"/>
+ <pathelement path="${jar.dir}/tracedApp.jar"/>
+ </classpath>
+ </java>
+ <echo message="---------- running with tracing - FINISH"/>
+
+ </target>
+
+ <!-- ============================================================= -->
+ <!-- do tracing example with 1.2 load-time weaving -->
+ <!-- (and use fork/forkclasspath to avoid Eclipse 2.x bug) -->
+ <!-- ============================================================= -->
+ <target name="tracing-lt" depends="init"
+ description="tracing example with load-time aspect weaving">
+ <antcall target="clean" />
+
+ <!-- build application classes -->
+ <iajc outjar="${jar.dir}/tracingApp.jar"
+ classpath="${aspectjrt.jar}"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ verbose="off">
+ <src path="${example.dir}"/>
+ <include name="tracing/*.java" />
+ </iajc>
+
+ <!-- Build a read-only tracing library -->
+ <iajc outjar="${jar.dir}/tracingLib.jar"
+ classpath="${aspectjrt.jar}:${jar.dir}/tracingApp.jar"
+ fork="true"
+ forkclasspath="${aspectjtools.jar}"
+ verbose="off">
+ <src path="${example.dir}"/>
+ <include name="tracing/version2/Trace.java" />
+ <include name="tracing/version2/TraceMyClasses.java" />
+ </iajc>
+
+ <!-- test standalone application by running without tracing -->
+ <echo message="---------- running without tracing - START"/>
+ <java classname="tracing.ExampleMain">
+ <classpath>
+ <pathelement path="${aspectjrt.jar}"/>
+ <pathelement path="${jar.dir}/tracingApp.jar"/>
+ </classpath>
+ </java>
+ <echo message="---------- running without tracing - FINISH "/>
+
+ <!-- run application with LTW to add tracing -->
+ <echo message="---------- running with tracing - START"/>
+ <java classname="tracing.ExampleMain"
+ fork="true">
+ <classpath>
+ <pathelement path="${aspectjweaver.jar}"/>
+ </classpath>
+ <jvmarg line="-showversion"/>
+ <sysproperty key="java.system.class.loader" value="org.aspectj.weaver.loadtime.WeavingURLClassLoader"/>
+ <sysproperty key="aj.weaving.verbose" value="True"/>
+ <sysproperty key="org.aspectj.weaver.showWeaveInfo" value="True"/>
+ <sysproperty key="aj.class.path" path="${jar.dir}/tracingLib.jar:${jar.dir}/tracingApp.jar"/>
+ <sysproperty key="aj.aspect.path" path="${jar.dir}/tracingLib.jar"/>
+ </java>
+ <echo message="---------- running with tracing - FINISH"/>
+
+ </target>
+
+</project>