ANT
ANT簡介
Ant簡介
ANT環境安裝設置
Apache Ant功能特性
Ant構建文件
Apache Ant安裝
Ant屬性任務
Apache Ant入門程序(Hello World)
Ant屬性文件
Apache Ant構建文件-project標籤
Ant數據類型
Apache Ant目標-target標籤
Ant構建項目
Apache Ant任務-task標籤
Ant構建文檔
Apache Ant屬性
Ant創建JAR文件
Apache Ant令牌過濾器
Ant創建WAR文件
Apache Ant命令行參數
Ant打包應用
Apache Ant If和Unless用法
Ant部署應用程序
Apache Ant類型
Ant執行Java代碼
Apache Ant自定義組件
Ant和Eclipse集成
Apache Ant監聽器和記錄器
Ant Junit集成
Apache Ant IDE集成
Apache Ant InputHandler接口
Ant之外的Apache Ant任務
Apache Ant參數處理器
Apache Ant API
Apache Ant Jar示例
Apache Ant自定義組件
Ant允許根據的要求創建自定義組件。 自定義組件可以是條件,過濾器,選擇器等,並在ant核心api
之外定義。
自定義組件的行爲類似於Ant核心組件。
自定義組件是可以實現類和接口的普通Java類。 它看起來像編寫一個自定義任務,通過setter
和getter
方法定義屬性。
<typedef>
元素用於將自定義組件實現到Ant核心中。
1. 創建自定義組件
這是一個三階段的過程。 首先創建一個Java類,然後定義<typedef>
元素,然後在構建文件中使用它。
示例
爲條件創建Java類。參考以下代碼:
package com.yiibai;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.condition.Condition;
public class AllUpperCaseCondition implements Condition {
private String value;
// The setter for the "value" attribute
public void setValue(String value) {
this.value = value;
}
// This method evaluates the condition
public boolean eval() {
if (value == null) {
throw new BuildException("value attribute is not set");
}
return value.toUpperCase().equals(value);
}
}
現在通過指定Java類來定義<typedef>
。
<typedef name="alluppercase" classname="com.yiibai.AllUpperCaseCondition"
classpath="test.com.yiibai"/>
通過這樣做,已經成功創建了一個自定義元素<alluppercase>
,它可以在項目中進一步使用。 請參閱build.xml
文件。
文件:build.xml -
<project name="java-ant project" default="abc">
<typedef name="alluppercase" classname="com.yiibai.AllUpperCaseCondition"
classpath="test.com.yiibai"/>
<target name="abc" >
<condition property="allupper">
<alluppercase value="THIS IS ALL UPPER CASE"/>
</condition>
</target>
</project>
2. 自定義選擇器
在上面的例子中,我們創建了一個自定義條件元素。現在將創建一個自定義選擇器。選擇器是數據類型並且要創建自定義選擇器,它必須實現
org.apache.tools.ant.types.selectors.FileSelector
接口。 此接口具有單個方法isSeletected(File basedir,String filename,File file)
,必須重寫該方法。 下面給出了自定義選擇器的示例。
Java類
package com.yiibai;
import java.io.File;
import org.apache.tools.ant.types.selectors.FileSelector;
public class JavaSelector implements FileSelector {
public boolean isSelected(File b, String filename, File f) {
return filename.toLowerCase().endsWith(".java");
}
}
類型定義
<typedef name="javaselector" classname="com.yiibai.JavaSelector"
classpath="test"/>
文件:build.xml -
<project name="java-ant project" default="abc">
<target name="abc">
<typedef name="javaselector" classname="com.yiibai.JavaSelector"
classpath="test"/>
<copy todir="destdir">
<fileset dir="src">
<javaselector/>
</fileset>
</copy>
</target>
</project>