You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2003/11/04 23:05:36 UTC

DO NOT REPLY [Bug 24411] New: - odd presetdef behavior with "additive" task parameters like javac srcdir

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24411>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24411

odd presetdef behavior with "additive" task parameters like javac srcdir

           Summary: odd presetdef behavior with "additive" task parameters
                    like javac srcdir
           Product: Ant
           Version: 1.6Beta
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: jmlennon@us.ibm.com


If you use presetdef to create a new task definition,
and you supply a default value to a "cumulative" parameter
like javac's "srcdir", users of that new definition
cannot override that default value, they can only add
to it.  I find this behavior surprising, and I feel that
it seriously limits the usefulness of "presetdef".

Many tasks have cumulative parameters like this, e.g.:

   javac: srcdir, *classpath, extdirs, ...
   javadoc: sourcepath, packagenames, ...
   jar:  includes, excludes, ...

I suspect that users of presetdef will find it much more
useful if default values of these cumulative parameters
can be overridden, not just supplemented.

BTW, aside from this nit, "presetdef" is a wonderful
addition to Ant.  THanks!

The following build file illustrates the problem

========= CUT HERE ================================

<?xml version="1.0"?>

<!--
######################################################################
 To reproduce:
 1.  Create two empty files:
       default/empty.java
       override/empty.java

 2. Execute this build file with Ant v1.6
       C:\temp>ant
       Buildfile: build.xml

       all:
        [my.javac] Compiling 2 source files
        [my.javac] [parsing started C:\temp\default\empty.java]
        [my.javac] [parsing completed 31ms]
        [my.javac] [parsing started C:\temp\override\empty.java]
        [my.javac] [parsing completed 0ms]
        [my.javac] [total 391ms]

       BUILD SUCCESSFUL
       Total time: 1 second
       C:\temp>ant -version
       Apache Ant version 1.6beta2 compiled on October 31 2003
       C:\temp>

     Note that *both* files got compiled.

######################################################################-->

<project name="presetdef" default="all">

  <presetdef name="my.javac">
    <!-- Provide default value for source directory. -->
    <javac srcdir="default" verbose="true"/>
  </presetdef>

  <target name="all">
    <!-- I expected the following task to compile just the contents of
         the directory "override", but (surprisingly) it also compiles
         the contents of "default". -->
    <my.javac srcdir="override"/>
  </target>

</project>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org