You cannot (currently) do that like that.
However you can use ant types to do the same thing.
-------------------------------------------
src/mymapper/MyMapper.java
-------------------------------------------
package mymapper;
import org.apache.tools.ant.util.FileNameMapper;

public class MyMapper implements FileNameMapper {
   public void setFrom(String from) {}
   public void setTo(String to) {}
   public String[] mapFileName(String sourceFileName) {
       return new String[] {
           sourceFileName.toUpperCase()};
   }
}
------------------------------------
src/mymapper/antlib.xml
-----------------------------------

<antlib xmlns:current="ant:current">
 <typedef name="mymapper"
          classname="mymapper.MyMapper"/>

 <macrodef name="copyMapUpper">
   <attribute name="todir"/>
   <attribute name="fromdir"/>
   <sequential>
     <copy todir="@{todir}">
       <fileset dir="@{fromdir}"/>
       <mapper>
         <current:mymapper/>
       </mapper>
     </copy>
   </sequential>
 </macrodef>
</antlib>

(Note the use of current: to resolve the namespace that the mymapper
type is placed in - see:
http://ant.apache.org/manual/CoreTypes/antlib.html#currentnamespace)

--------------------------
build.xml:
-------------------------
<project default="t" xmlns:my="antlib:mymapper">
 <target name="t">
   <mkdir dir="classes"/>
   <javac srcdir="src" destdir="classes"
          debug="yes"/>
   <copy todir="classes">
     <fileset dir="src"/>
   </copy>
   <typedef uri="antlib:mymapper" classpath="classes"/>
   <mkdir dir="upper"/>
   <my:copyMapUpper todir="upper" fromdir="src"/>
 </target>
</project>

(For ant.1.6.5, you need to add resource="mymapper/antlib.xml"
to the <typedef uri=../>)

   <typedef uri="antlib:mymapper"
            resource="mymapper/antlib.xml"
            classpath="classes"/>

Peter

On 1/10/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
I have an AntLib for which I wrote a FileNameMapper.
I cant use that mapper from inside the antlib.xml:


antlib.xml
---8-<-------8-<-------8-<-------8-<-------8-<-------8-<-------8-<------
-8-<----
<antlib>
    <macrodef name="mask">
        <attribute name="dir"/>
        <sequential>
            <move todir="@{dir}">
                <fileset dir="@{dir}"/>
                <!--
                        public String[] mapFileName(String filename) {
                                return new
String[]{filename.replaceAll(from, to)};
                        }
                -->
                <mapper

classname="org.apache.tools.ant.taskdefs.optional.ccm.ReplaceAllMapper"
                        from="-"
                        to="__"
                />
            </move>
        </sequential>
    </macrodef>
</antlib>
---8-<-------8-<-------8-<-------8-<-------8-<-------8-<-------8-<------
-8-<----



build.xml
---8-<-------8-<-------8-<-------8-<-------8-<-------8-<-------8-<------
-8-<----
<project xmlns:ccm="antlib:org.apache.tools.ant.taskdefs.optional.ccm"
default="menu">
    <taskdef uri="antlib:org.apache.tools.ant.taskdefs.optional.ccm"

resource="org/apache/tools/ant/taskdefs/optional/ccm/antlib.xml"
             classpath="../../build/antlib_ccm.jar"/>

        <target name="mapper.prepare">
                <mkdir dir="testdir/dir-1/dir-2/dir-3"/>
                <echo
file="testdir/dir-1/dir-2/dir-3/one-two-three-four-five.txt" message="a
file"/>
        </target>
        <target name="mapper.mask">
                <ccm:mask dir="testdir"/>
        </target>

</project>
---8-<-------8-<-------8-<-------8-<-------8-<-------8-<-------8-<------
-8-<----


When running normally I get "ClassNotFoundException"

The following error occurred while executing this line:

jar:file:/C:/ant/rzf/CCM_AntLib/build/antlib_ccm.jar!/org/apache/tools/a
nt/taskdefs/optional/ccm/antlib.xml:180:
  java.lang.ClassNotFoundException:
org.apache.tools.ant.taskdefs.optional.ccm.ReplaceAllMapper

When invoking with -lib that works. But I dont want our developers
always to type "-lib ......" or to disrupt the "clean" Ant installation.

Any ideas with that classloader issue? (best on Java1.4+Ant 1.6.5)


Jan


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to