-        <filelist dir="." files="@{sourceref}" />  <-- email is about this
+        <filelist dir="." refid="@{sourceref}" />  <-- email is about this 

Jan

>-----Ursprüngliche Nachricht-----
>Von: Robert Menteer [mailto:reet...@me.com] 
>Gesendet: Mittwoch, 10. März 2010 21:28
>An: user@ant.apache.org
>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: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to