Newbie to AspectJ - but spent a good amount of time looking through the
AspectJ <iajc> ant task documentation and the aspectj-users mail list
archives. Here is my issue. I'm using the <iajc> Ant task (AspectJ
1.5.2). Everything works fine when/if the <iajc> task is only executed
once per Ant session (i.e. when a single target is specified on ant
commandline, say 'ant build', resulting in one invocation of <iajc>
task. However I'm getting "unable to find aspectjtools to fork - tried
../lib/aspectjtools.jar" when the <iajc> task is executed more than once
per Ant session (i.e. when multiple targets are specified on ant
commandline, say 'ant build test', resulting in more than one invocation
of the <iajc> task. I'm certain the solution lies in the forkclasspath
attribute of the <iajc> task based on what I've read, but so far I have
been unable to get it working as prescribed. I tried copying
aspectjtools.jar into Ant's lib but did not help. I've included
relevant sections of my Ant build script (note that the 'test' target
depends on 'build-test' which depends on 'build'). For now, I've added
an up-to-date/check target to determine if the [2nd] build is necessary
which avoids the issue but I wouldn't consider this a fix (more a
workaround). Any tips or pointers would be much appreciated.
> Relevant sections/snippets of Ant build script:
> <target name="set-path">
> <path id="aspectj.classpath">
> <pathelement location="../lib/aspectjtools.jar"/>
> </path>
> <path id="project.classpath">
> <pathelement location="."/>
> <pathelement location="${classes}"/>
> <pathelement path="${depends.jdk.libs}"/>
> <pathelement location="../lib/aspectjrt.jar"/>
> </path>
> </target>
>
> <!-- build -->
> <target name="build" depends="set-paths" description="Compile
> source files">
> <taskdef
> resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"
> classpathref="aspectj.classpath"/>
> <iajc fork="true"
> deprecation="off"
> debug="true"
> X="noInline"
> destdir="${classes}"
> classpathref="project.classpath"
> forkclasspathref="aspectj.classpath"
> <sourceroots>
> <pathelement location="${sources}"/>
> <pathelement location="${resources}"/>
> </sourceroots>
> </iajc>
> </target>
>
> <!-- dist -->
> <target name="dist" depends="build" description="Create
> distribution files">
> <jar jarfile="${distdir}/${jarfile}"
> manifest="${tmp.manifest.file}">
> <fileset dir="${classes}">
> <include name="**/*"/>
> </fileset>
> <fileset dir="${src.config.dir}">
> <include name="**/*.*"/>
> </fileset>
> </jar>
> </target>
>
> <!-- build-test -->
> <target name="build-test" depends="build">
> <javac destdir="${test.classes}"
> deprecation="off"
> debug="${debugmode}"
> classpathref="project.class.path"
> fork="yes"
> executable="${javac.location}"
> compiler="${javac.version}">
> <src path="${test.src.dir}" />
> </javac>
> </target>
>
> <!-- test -->
> <target name="test" depends="build-test" description="Run unit
> tests">
> ... (emma)
> <junit fork="yes" haltonfailure="no" printsummary="on">
> <formatter type="xml"/>
> <formatter type="brief" usefile="false"/>
> <test name="${test.entry}" todir="${test.results.dir}"/>
> <classpath>
> <pathelement location="${out.instr.dir}"/>
> <path refid="emma.lib"/>
> </classpath>
> <classpath refid="project.class.path"/>
> <classpath refid="runtime.class.path"/>
> <jvmarg
> value="-Demma.coverage.out.file=${coverage.dir}/coverage.ec"/>
> <jvmarg value="-Demma.coverage.out.merge=false"/>
> <jvmarg value="-Dlog.dir=${log.dir}"/>
> </junit>
> ... (junitreports)
> ... (emma reports)
> </target>
>
> For now, I added a 'check' to determine if the build is necessary
> which avoids the problem.
> <target name="is.build.necessary">
> <uptodate property="build.unnecessary"
> targetfile="${distdir}/${jarfile}">
> <srcfiles dir="${sources}" includes="**/*.java **/*.aj" />
> <srcfiles dir="${resources}" includes="**/*.java **/*.aj"
> />
> </uptodate>
> </target>
>
> <!-- build -->
> <target name="build" depends="post-process, is.build.necessary"
> unless="build.unnecessary"
> ...
>
> Thank you,
> Tim Mulligan
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users