| failonerror | 実行が失敗したらBuildException?例外を発生しなければならないか、それとも単にエラーを表示すればよいか制御するブール値。パラメータ確認の失敗は、このフラグにかかわらず常にエラーをスローします。 |
| destdir | 出力先ディレクトリ |
| destfile | 出力先ファイル |
| srcdir | ソースディレクトリ |
| srcfile | ソースファイル |
public final class MyTask extends MatchingTask {
/**
* 出力ディレクトリ
* このタスクにdestdirが無い場合にはnullのままです
*/
private File destDir = null;
/**
* 入力ディレクトリ
* このタスクにsrcdirが無い場合にはnullのままです
*/
private File srcDir = null;
/**
* このタスクのfailOnError属性.
* このタスクにfailOnError属性がない場合にはtrueがデフォルト値として設定されます
*/
private boolean failOnError = true;
/**
* デフォルトコンストラクタ
*/
public HelloAnt() {
super();
}
/**
* @param pDestDir destDir を設定。
*/
public void setDestDir(final File pDestDir) {
this.destDir = pDestDir;
}
/**
* このタスクのfailOnError属性を受け取ります.
* このタスクのfailOnError属性を受け取ります。属性が"true","yes","on"
* の場合には引数にtrueが指定されます。
* それ以外の時にはfalseが指定されます。
* もしもこのタスクにfailOnError属性がない場合には、このメソッドは
* 呼ばれません。
* @param pFailOnError failOnError を設定。
*/
public void setFailOnError(final boolean pFailOnError) {
this.failOnError = pFailOnError;
}
/**
* @param pSrcDir srcDir を設定。
*/
public void setSrcDir(final File pSrcDir) {
this.srcDir = pSrcDir;
}
/**
* Antフレームワークから呼び出されるメソッド
* @throws BuildException Antタスクの実行に失敗した
*/
public void execute() throws BuildException {
try {
// 属性チェック
if (srcDir == null) {
throw new BuildException("srcdir attribute must be set!");
}
if (!srcDir.exists()) {
throw new BuildException("srcdir does not exist!");
}
if (!srcDir.isDirectory()) {
throw new BuildException("srcdir is not a directory!");
}
if (destDir == null) {
throw new BuildException("destdir attribute must be set!");
}
if (!destDir.exists()) {
throw new BuildException("destdir does not exist!");
}
if (!destDir.isDirectory()) {
throw new BuildException("destdir is not a directory!");
}
log("SRCDIR :" + srcDir.getAbsolutePath());
log("DESTDIR :" + destDir.getAbsolutePath());
log("failOnError :" + Boolean.toString(failOnError));
DirectoryScanner ds = super.getDirectoryScanner(srcDir);
String[] fileNames = ds.getIncludedFiles();
for (int cnt = 0; cnt < fileNames.length; cnt++) {
log("SRCFILE(" + cnt + ")=" + fileNames[cnt]);
}
} catch (BuildException ex) {
if (failOnError) {
throw ex;
} else {
log("Task Failed!");
}
}
}
}C:\eclipse\plugins\org.apache.ant_1.6.2\lib\ant.jarを指定する
<project name="AntExam" basedir="." default="exec_task">
<!-- ******************************************************************* -->
<!-- クラスパスの設定 -->
<path id="class.path">
<fileset dir="C:\eclipse\plugins\org.apache.ant_1.6.2\lib">
<include name="*.jar" />
</fileset>
<fileset dir="lib/">
<include name="*.jar" />
</fileset>
</path>
<!-- ******************************************************************* -->
<!-- MyTaskタスクの作成 -->
<target name="make_task" depends="" description="antタスクを作成します">
<javac srcdir="src" destdir="bin" classpathref="class.path" />
<jar jarfile="lib/MyTask.jar">
<fileset dir="bin">
<include name="**/*.class" />
</fileset>
</jar>
</target>
<!-- ******************************************************************* -->
<!-- MyTaskタスクの実行 -->
<taskdef name="myTask" classname="com.foo.MyTask" classpathref="class.path" />
<target name="exec_task" depends="make_task" description="antタスクを実行します">
<myTask srcdir="src" destdir="bin" failonerror="yes" />
</target>
</project>public class MyTask() extends Task{
private List yyyList = new LinkedList();
public YYY createYYY(){
YYY yyy = new YYY();
yyyList.add(yyy);
return yyy;
}
public void execute() throws BuildException {
for( Iterator it = yyyList.iterator() ; it.hasNext() ; ){
YYY yyy = (YYY)it.next();
log( yyy.toString() );
}
}
public class YYY{
private int num;
public int getNum(){
return num;
}
public void setNum( int pNum ){
num = pNum;
}
public String toString(){
return Integer.toString( num );
}
}
}
<MyTask> <YYY num="10"/> </MyTask>
public class MyTask() extends Task{
List fileSetList = new LinkedList();
public FileSet createFileSet(){
FileSet fileSet = new FileSet();
fileSetList.add( fileSet );
return fileSet;
}
public void execute() throws BuildException {
for( Iterator it = fileSetList.iterator() ; it.hasNext() ; ){
FileSet fileSet = (FileSet)it.next();
FileScanner fileScanner = fileSet.getDirectoryScanner(this.getProject());
File basedir = fileScanner.getBasedir();
String dirName = basedir.toString()
String[] fileNames = fileScanner.getIncludedFiles();
for (int cnt = 0; cnt < fileNames.length; cnt++) {
log("FILESET(" + cnt + ")=" + basedir + System.getProperty("path.separator") + fileNames[cnt]);
}
}
}
}
<MyTask> <fileset dir="." includes="**/*" /> </MyTask>