On Mon, 18 Aug 2003, Stefan Bodewig <[EMAIL PROTECTED]> wrote:
> <java> or <javac>?
<javac>!
> What would the mapper in <javac> be supposed to do?
There is a GlobPatternMapper in the javac-taskdef which is fixed to map
*.java-files to corresponding *.class-files. This is the reason why the
source directory structure and the destination directory structure must
match, which is usually no problem and what is expected by the
java-compiler as well.
Nevertheless there are situations in which this not the best case. I think
about a source layout, where different packages are in different
directories like this:
src
+--team1
! +--com
! +--example
! +--pack1
! +--Class1.java
! +--Class2.java
+--team2
+--com
+--example
+--pack2
+--ClassA.java
+--ClassB.java
But all packages should be compiled into a common directory like this:
build
+--com
+--example
+--pack1
! +--Class1.class
! +--Class2.class
+--pack2
+--ClassA.class
+--ClassB.class
The following task would compile all sources:
<javac srcdir="src"
destdir="build">
</javac>
But it would not be able to track unchanged *.java-files and does a
recompile each time ant is invoked.
Todays solution is either calling javac twice or copying all *.java-files
to a common directory before calling javac.
I guess it's faster and easier just to tell javac, how to find matching
sources and output like this:
<javac srcdir="src"
destdir="build">
<mapper type="regexp" from="[^/]+/(.*)\.java" to="\1.class"/>
</javac>
Of course <mapper type="glob" from"*.java" to="*.class"/> will be the
default.
Do you think this makes sense?
Ulf
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]