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:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

copy:
   [copy] Copying 1 file to F:\tutorialspoint\ant\build

BUILD SUCCESSFUL
Total time: 0 seconds

现在仅复制 .txt 文件。