Ant - 自定义组件
-
简述
Ant 允许非常容易地创建和使用自定义组件。可以通过实现条件、选择器、过滤器等接口来创建自定义组件。一旦课程准备就绪,我们就可以使用typedef在 build.xml 中创建要在任何目标下使用的组件。 -
句法
首先定义一个类作为 Ant 自定义组件,比如 TextSelector.java,然后在 build.xml 中定义一个选择器。<typedef name="text-selector" classname="TextSelector" classpath="."/>
然后在目标中使用该组件。<target name="copy"> <copy todir="${dest.dir}" filtering="true"> <fileset dir="${src.dir}"> <text-selector/> </fileset> </copy> </target>
-
例子
使用以下内容创建 TextSelector.java 并将其放在与 build.xml 相同的位置 -import java.io.File; import org.apache.tools.ant.types.selectors.FileSelector; public class TextFilter implements FileSelector { public boolean isSelected(File b, String filename, File f) { return filename.toLowerCase().endsWith(".txt"); } }
在 src 目录中创建一个 text1.txt 和一个 text2.java。目标是仅将 .txt 文件复制到构建目录。使用以下内容创建 build.xml -<?xml version="1.0"?> <project name="sample" basedir="." default="copy"> <property name="src.dir" value="src"/> <property name="dest.dir" value="build"/> <typedef name="text-selector" classname="TextSelector" classpath="."/> <target name="copy"> <copy todir="${dest.dir}" filtering="true"> <fileset dir="${src.dir}"> <text-selector/> </fileset> </copy> </target> </project>
-
输出
在上述构建文件上运行 Ant 会产生以下输出 -F:\jc2182\ant>ant Buildfile: F:\jc2182\ant\build.xml copy: [copy] Copying 1 file to F:\jc2182\ant\build BUILD SUCCESSFUL Total time: 0 seconds
现在只复制 .txt 文件。