[aspectwerkz-dev] Re: [aspectwerkz-user] Re: problems with ant task
the_mindstorm <[email protected]> Tue, 05 Oct 2004 10:42:39 +0300
| Newsgroups | gmane.comp.java.aspectwerkz.devel |
|---|---|
| Message-ID | <[email protected]> |
Quote [Jonas Bonér]: > Hey Mindstorm. > > I have impl support for multiple source dirs now. > Syntax is: -src bla/dir1;bla/dir2;dir3 > > In HEAD. Will commit to 1.0 branch as well, later, for now just copy > it if you like. > > /Jonas Jonas why shouldn't we go the fileset way? I think it is more generic than multiple directories. (my 2c - I have Alex backing me for this too ;-) ) ./the_mindstorm > > > On Tue, 05 Oct 2004 01:58:46 +0300, pope <[email protected]> wrote: > >> >>Quote [the_mindstorm]: >> >> >>>Quote [Jonas Bonér]: >>> >>> >>>>Hi Mikael. >>>> >>>>We currently do not have an Ant task that is up to date. But we do >>>>need one. Care to help out? I can give you some guiding if you need/want. >>>>Thanks. >>>> >>>>/Jonas >>>> >>>> >>>>On Mon, 04 Oct 2004 16:14:49 +0200, Mikael Berglund >>>><[email protected]> wrote: >>>> >>>> >>>>>Jonas Bonér wrote: >>>>> >>>>> >>>>>>The ant task for the offline compiler is really nasty and is >>>>>>deprecated. It should be removed to >>>>>>avoid usage and confusion. I anyone happens to write one that >>>>>>actually works please send it to me. >>>>>>I always use AspectWerkzC directly using the <java ..> task. >>>>> >>>>> >>>>>Hello, >>>>> >>>>>what is the status on this? It would be really convenient to >>>>>have an Ant task for this. The dependency on environment >>>>>variables makes it more diffucult for us to make an easy to >>>>>set up build environment. >>>>> >>>>>Regards, >>>>>Mikael >>>>> >>>>> >>>>> >>>>>>--- Ivo Houbrechts <[email protected]> wrote: >>>>>> >>>>>> >>>>>> >>>>>>>Hi there, >>>>>>> >>>>>>>I tried aspectwerkz for the first time and I couldn't get the >>>>>>>OfflineTransformationTask to work. I noticed that the ant task calls >>>>>>>Runtime.getRuntime().exec to run aspectwerkz.bat (or .sh) which in >>>>>>>turn >>>>>>>runs the AspectWerkzC class's main(). I think that the problem is with >>>>>>>windows not being able to handle long command lines (long classpath). >>>>>>>I solved this problem by calling the AspectWerkzC class directly from >>>>>>>ant, which is much cleaner in my opinion. I hope however that in the >>>>>>>future there will be an ant task that excepts a nested <path> for the >>>>>>>compile path and that doesn't make use of environment variables >>>>>>>anymore. >>>>>>> >>>>>>>Here's my ant target: >>>>>>> >>>>>>><target depends="compile" name="aspectwerkz" description="compile >>>>>>>aspects"> >>>>>>><pathconvert property="compilePath" >>>>>>> dirsep="${file.separator}" >>>>>>> pathsep="${path.separator}"> >>>>>>> <path> >>>>>>> <fileset dir="${my.lib.dir}"> >>>>>>> <include name="*.jar"/> >>>>>>> </fileset> >>>>>>> </path> >>>>>>></pathconvert> >>>>>>> >>>>>>><java classname="org.codehaus.aspectwerkz.compiler.AspectWerkzC" >>>>>>> fork="true"> >>>>>>> <classpath> >>>>>>> <fileset dir="${aspectwerkz.home}/lib"> >>>>>>> <include name="*.jar"/> >>>>>>> </fileset> >>>>>>> </classpath> >>>>>>> <sysproperty key="aspectwerkz.transform.filter" value="no"/> >>>>>>> <sysproperty key="aspectwerkz.definition.file" >>>>>>> value="${my.conf.dir}/aspectwerkz.xml"/> >>>>>>> <sysproperty key="aspectwerkz.home" value="${aspectwerkz.home}"/> >>>>>>> <arg value="-verbose"/> >>>>>>> <arg value="-cp"/> >>>>>>> <arg value="${compilePath}"/> >>>>>>> <arg value="${my.classes.totransform.dir}"/> >>>>>>></java> >>>>>>></target> >>>>>>> >>>This is a draft one. It would be nice to allow setting more than one >>>source/classes directory. >> >>The changed required in AnnotationC would not be so dramatic for allowing multiple src, respectively >>multiple class directories. At least these are my 2c. >>Another option would be to let AnnotationC work on something similar to Ant filesets (the most generic). >> >>Pls let me know. >> >>./the_mindstorm >> >> >>>./the_mindstorm >>> >>> >>>------------------------------------------------------------------------ >>> >>>/* >>> * $Id$ >>> * $Date$ >>> */ >>>package net.noco.dtogen.ant; >>> >>>import java.io.File; >>> >>>import org.apache.tools.ant.BuildException; >>>import org.apache.tools.ant.Task; >>>import org.apache.tools.ant.taskdefs.Java; >>>import org.apache.tools.ant.types.Commandline; >>>import org.apache.tools.ant.types.Path; >>>import org.apache.tools.ant.types.Reference; >>> >>> >>>/** >>> * Offiline weaving task. >>> * >>> * @author <a href='mailto:[email protected]'>the_mindstorm(at)evolva(dot)ro</a> >>> * @version $Revision$ >>> */ >>>public class OfflineWeaverTask extends Task { >>> protected Path classpath; >>> protected boolean verbose; >>> protected File srcDir; >>> protected File clsDir; >>> protected File customs; >>> >>> public void setVerbose(boolean isVerbose) { >>> this.verbose = true; >>> } >>> >>> public void setSrcDir(File src) { >>> this.srcDir = src; >>> } >>> >>> public void setClassDir(File dir) { >>> this.clsDir = dir; >>> } >>> >>> public void setCustomAnnotations(File file) { >>> this.customs = file; >>> } >>> >>> public void setClasspath(Path path) { >>> this.classpath = path; >>> } >>> >>> public void setClasspathRef(Reference reference) { >>> this.classpath = new Path(getProject()); >>> this.classpath.setRefid(reference); >>> } >>> >>> public void execute() throws BuildException { >>> if(this.srcDir==null || !this.srcDir.isDirectory()) { >>> throw new BuildException("srcDir ["+this.srcDir+"] is not a valid source directory"); >>> } >>> if(this.clsDir==null || !this.clsDir.isDirectory()) { >>> throw new BuildException("classDir ["+this.srcDir+"] is not a valid classes directory"); >>> } >>> if(this.customs==null || !this.customs.isFile()) { >>> throw new BuildException("customAnnotations ["+this.customs+"] is not a valid annotations file"); >>> } >>> >>> Java java = new Java(); >>> >>> java.setClassname("org.codehaus.aspectwerkz.annotation.AnnotationC"); >>> java.setProject(getProject()); >>> java.setFork(true); >>> java.setClasspath(this.classpath); >>> Commandline.Argument lineArgs = java.createArg(); >>> >>> StringBuffer argsBuf = new StringBuffer(); >>> >>> if(this.verbose) { >>> argsBuf.append("-verbose "); >>> } >>> argsBuf.append("-src ") >>> .append(this.srcDir.getAbsolutePath()) >>> .append(" -classes ") >>> .append(this.clsDir.getAbsolutePath()) >>> .append(" -custom ") >>> .append(this.customs.getAbsolutePath()); >>> >>> java.execute(); >>> } >>>} >> >> >