- <filelist dir="." files="@{sourceref}" /> <-- email is about this
+ <filelist dir="." refid="@{sourceref}" /> <-- email is about this
Jan
>-----Ursprüngliche Nachricht-----
>Von: Robert Menteer [mailto:[email protected]]
>Gesendet: Mittwoch, 10. März 2010 21:28
>An: [email protected]
>Betreff: Passing a list of files to javac
>
>How can I get the javac task to use an existing fileset? In my
>build.xml I have created several filesets to be used in
>multiple places throughout build file. Here is how they have
>been defined:
>
> <fileset dir = "${src}"
> id = "java.source.all">
> <include name = "**/*.java" />
> </fileset>
>
> <fileset dir = "${src}"
> id = "java.source.examples">
> <include name = "**/Examples/**/*.java" />
> </fileset>
>
> <fileset dir = "${src}"
> id = "java.source.tests">
> <include name = "**/Tests/*.java" />
> </fileset>
>
> <fileset dir = "${src}"
> id = "java.source.project">
> <include name = "**/*.java" />
> <exclude name = "**/Examples/**/*.java" />
> <exclude name = "**/Tests/**/*.java" />
> </fileset>
>
>I have also used macrodef to compile the java files so the
>javac task does not need to be repeated multiple times. The
>macro looks like this:
>
> <macrodef name="compile">
> <attribute name="sourceref"/>
> <sequential>
> <javac srcdir = "${src}"
> destdir = "${build}"
> classpathref = "classpath"
> includeantruntime = "no"
> debug = "${debug}">
> <filelist dir="." files="@{sourceref}" /> <-- email
>is about this
> </javac>
> </sequential>
> </macrodef>
>
>What I'm trying to do is compile only the classes that are
>needed for specific targets not all the targets in the source
>tree. And do so without having to specify the files every
>time. Here are how the targets are defined:
>
> <target name = "compile-examples"
> depends = "init">
> <compile sourceref = "${toString:java.source.examples}" />
> </target>
>
> <target name = "compile-project"
> depends = "init">
> <compile sourceref = "${toString:java.source.project}" />
> </target>
>
> <target name = "compile-tests"
> depends = "init">
> <compile sourceref = "${toString:java.source.tests}" />
> </target>
>
>As you can see each target specifies the java files to be
>compiled as a simi-colon separated list of absolute file
>names. The only problem with this is that javac does not
>support filelist. It also does not support fileset, path or
>pathset. I've tried using <include name = "@{sourceref}" />
>but it treats the list as a single file name. Another thing I
>tried is sending the reference directly (not using toString)
>and using <include ref = "@{sourceref}" /> but include does
>not have a ref attribute.
>
>I've done a search of this list and noticed another person
>with a similar problem. But while it was discussed no solution
>was presented.
>
>SO THE QUESTION IS: How do you get the javac task to use a
>reference to a fileset that was defined in another part of the
>build file? I'm not interested in solutions that cause me to
>have multiple javac tasks. Completely re-writting the macro is
>acceptable. Changes to the targets are also acceptable
>provided redundant code between targets is kept to a minimum.
>
>p.s. Another problem is that fileset wants a comma separated
>list. I've only done a brief search for a way to convert
>semi-colons to commas and haven't found a way to do that.
>
>p.p.s. Sorry for the yelling but some people are too quick to
>post responses that don't address the subject.
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]