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>