123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458 |
-
- <!-- ========================================================================= -->
- <!-- 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>
|