Ant のバックアップソース(No.33)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Ant へ行く。
- 1 (2007-08-16 (木) 17:16:53)
- 2 (2007-11-30 (金) 14:02:54)
- 3 (2008-07-29 (火) 00:59:01)
- 4 (2008-09-14 (日) 17:44:32)
- 5 (2009-11-04 (水) 18:56:04)
- 6 (2010-11-20 (土) 15:01:26)
- 7 (2010-12-17 (金) 15:28:14)
- 8 (2010-12-19 (日) 18:55:11)
- 9 (2011-01-14 (金) 17:12:45)
- 10 (2011-01-18 (火) 22:49:08)
- 11 (2011-01-21 (金) 14:33:56)
- 12 (2011-02-15 (火) 19:56:36)
- 13 (2011-06-03 (金) 13:29:57)
- 14 (2012-01-19 (木) 18:52:53)
- 15 (2012-01-25 (水) 00:15:51)
- 16 (2012-03-06 (火) 14:30:03)
- 17 (2012-07-20 (金) 16:22:52)
- 18 (2014-02-18 (火) 19:13:59)
- 19 (2014-02-19 (水) 02:27:17)
- 20 (2014-09-02 (火) 15:44:27)
- 21 (2014-09-27 (土) 01:45:29)
- 22 (2014-11-08 (土) 01:39:55)
- 23 (2016-03-07 (月) 15:53:03)
- 24 (2016-06-15 (水) 16:57:49)
- 25 (2016-12-06 (火) 15:15:24)
- 26 (2017-01-23 (月) 19:59:27)
- 27 (2017-02-15 (水) 14:01:28)
- 28 (2017-03-24 (金) 12:44:41)
- 29 (2017-09-11 (月) 14:24:11)
- 30 (2017-09-19 (火) 18:30:26)
- 31 (2017-09-23 (土) 14:05:31)
- 32 (2017-10-19 (木) 16:07:45)
- 33 (2017-10-27 (金) 16:26:13)
- 34 (2017-10-31 (火) 20:52:57)
- 35 (2017-11-01 (水) 17:14:55)
- 36 (2017-11-16 (木) 18:13:36)
- 37 (2018-01-16 (火) 19:45:36)
- 38 (2018-10-27 (土) 20:59:14)
- 39 (2019-10-02 (水) 19:45:28)
- 40 (2022-09-30 (金) 20:13:52)
--- keywords: [Ant] description: JavaベースのビルドツールであるAntの使い方についてメモしています。 author: aterai pubdate: 2003-09-25 --- #contents * 概要 [#summary] `Ant`は、`Java`ベースのビルドツールです。理論的には、`make`の欠点がない`make`の一種です(`Ant`翻訳より引用)。 このページでは、`Java`ベースのビルドツールである`Ant`の使い方についてメモしています。 * インストールと環境変数の設定 [#environments] [http://ant.apache.org/ Apache Ant - Welcome]などからダウンロードしたアーカイブを展開して、そこを環境変数`ANT_HOME`に設定します。「システムのプロパティ→詳細設定→環境変数」で、`ANT_HOME`を新規作成、もしくは編集してください。 #ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQsClLJ428I/AAAAAAAAAs0/B0-VGelgHu4/s800/ant_home.png) また、`%ANT_HOME%\bin\ant.bat`を使うために、パスを通しておきます。「システムのプロパティ→詳細設定→環境変数」で、`Path`を編集してください。 #ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQsClNPEp4I/AAAAAAAAAs8/hdtpb5o_pG4/s800/ant_path.png) * タスクのサンプル [#of688f72] `build.xml`、タスクなどのサンプルや、その他のちょっとした`Tips`などを、以下別ページにまとめています。 ** AntのConditionタスクで条件分岐を行う [#Condition] `Condition`タスクを使って、例えばディレクトリの有無などによる条件で、`Target`タスクを実行するかどうかを振り分けます。 - [[AntのConditionタスクで条件分岐を行う>Ant/Condition]] ** AntのScriptタスク中でif文を使った条件分岐を行う [#Script] `Condition`タスクの条件が複雑になるようなら、`<script language="javascript">`タスクなどで`if`文を使う方法もあります。 - [[AntのScriptタスク中でif文を使った条件分岐を行う>Ant/Script]] ** AntのTaskを自作 [#Task] `Ant`の`Task`を自作し、これを利用する方法をテストします。 - [[AntのTaskを自作>Ant/Task]] ** AntのScriptタスクでJavaScriptを使用する [#NewProperty] `Ant`の`Script`タスクで`JavaScript`を使用し、簡単なタスクを作成、実行します。 - [[AntのScriptタスクでJavaScriptを使用する>Ant/NewProperty]] ** AntのJarタスクで実行可能なJarファイルの作成 [#JarPackage] `Ant`を使って、`Windows`環境などでダブルクリックすると起動する`Jar`ファイルを作成します。 - [[AntのJarタスクで実行可能なJarファイルの作成>Ant/JarPackage]] ** AntでOutOfMemoryErrorが発生する場合 [#OutOfMemoryError] `Ant`を実行すると`OutOfMemoryError`が発生する場合の処置方法について解説しています。 - [[AntでOutOfMemoryErrorが発生する場合>Ant/OutOfMemoryError]] ** AntのプロパティファイルをXMLにする [#Properties] プロパティファイルのエンコーディングなどを気にせずに使えるように、`Ant`のプロパティファイルを`XML`にしてみます。 - [[AntのプロパティファイルをXMLにする>Ant/Properties]] ** Antで子フォルダのbuild.xmlを全部実行 [#Subant] `Subant`タスクを使って、一度に全部同じターゲットで子フォルダの`build.xml`を実行します。 - [[Antで子フォルダのbuild.xmlを全部実行>Ant/Subant]] ** Antのbasedirを子フォルダに変更して全部実行 [#basedir] `basedir`をカレントディレクトリ(`${user.dir}`)とは別の場所に指定して、`ant.bat`を実行します。 - [[Antのbasedirを子フォルダに変更して全部実行>Ant/basedir]] ** AntでFindBugsを実行する [#FindBugs] `Ant`から`FindBugs`を実行します。 - [[AntでFindBugsを実行する>Ant/FindBugs]] ** AntでPMDを実行する [#PMD] `Ant`から`PMD`を実行します。 - [[AntでPMDを実行する>Ant/PMD]] ** Antタスクの定義をスクリプト言語を使用して行う [#Scriptdef] スクリプト言語(`Javascript`)を使用して、`FTPS`(`File Transfer Protocol over SSL/TLS`)で通信する`Ant`タスクを定義します。 - [[Antタスクの定義をスクリプト言語を使用して行う>Ant/Scriptdef]] * targetのサンプル [#target] ** Checkstyleタスク [#Checkstyle] #code{{ <condition property="have.checkstyle"> <available file="${env.CHECKSTYLE_JAR}" /> </condition> <target name="checkstyle" if="have.checkstyle"> <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" classpath="${env.CHECKSTYLE_JAR}" /> <mkdir dir="${build.reports}" /> <checkstyle config="${user.dir}/checks.xml" failOnViolation="false"> <formatter type="plain" /> <formatter type="xml" toFile="${build.reports}/checkstyle-result.xml" /> <fileset dir="${src.dir}"> <include name="**/*.java" /> </fileset> </checkstyle> </target> }} *** Unable to create Root Module [#BuildFailed] `Checkstyle`のバージョン更新に伴うモジュールの廃止などの変更で、`config`ファイル(上記の例では`${user.dir}/checks.xml`)が不正になった場合などに発生するようです。 - `8.2` -- `remove FileContentsHolder module as FileContents object is available for filters on TreeWalker in TreeWalkerAudit Event . Author: Timur, Roman Ivanov #3573` -- `<module name="FileContentsHolder" />`を削除する必要がある -- `LeftCurlyCheck: clarify behavior of 'nlow' option after removal of 'maxLineLength'. Author: Roman Ivanov #3855` -- `<property name="maxLineLength" value="100"/>`を削除する必要がある #code{{ <module name="LeftCurly"> <property name="maxLineLength" value="100"/> </module> }} - `8.1` -- `Make SuppressionCommentFilter and SuppressWithNearbyCommentFilter children of TreeWalker. Author: Timur #4714` -- `<module name="SuppressionCommentFilter" />`を`<module name="TreeWalker">`の子要素になるよう移動%%削除%%する必要がある ** ErrorProneタスク [#ErrorProne] - [http://errorprone.info/ Error Prone] -- [http://errorprone.info/docs/flags Command-line flags] #code{{ <target name="errorprone" depends="prepare-src, prepare-resource, prepare-web"> <path id="errorprone.classpath"> <!-- 環境変数などでerror_prone_ant-x.x.x.jarのあるディレクトリを指定 --> <fileset dir="${env.ERRORPRONE_HOME}"> <include name="*.jar" /> </fileset> </path> <componentdef name="errorprone" classname="com.google.errorprone.ErrorProneExternalCompilerAdapter" classpathref="errorprone.classpath" /> <javac srcdir="${build.src}" includes="**/*.java" destdir="${build.dest}" encoding="${compile.encoding}" debug="${compile.debug}" optimize="${compile.optimize}" deprecation="${compile.deprecation}" includeAntRuntime="no" fork="true" classpathref="project.class.path"> <errorprone /> <compilerarg value="-Xlint:unchecked" /> <!-- MultipleTopLevelClassesのチェックを無視する例 --> <compilerarg value="-Xep:MultipleTopLevelClasses:OFF" /> </javac> </target> }} - 上記の`componentdef`を使用する方法では、`Java 9`で`bootclasspath/p is no longer a supported option.`とエラーになる errorprone: [javac] Compiling 2 source files to C:\Users\terai\jst\SelectionKeeper\target\classes [javac] -Xbootclasspath/p is no longer a supported option. [javac] Error: Could not create the Java Virtual Machine. [javac] Error: A fatal exception has occurred. Program will exit. - ドキュメントにあるように、`javac`タスクで`compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"`属性を追加使用するよう修正 #code{{ <target name="errorprone" depends="prepare-src, prepare-resource, prepare-web"> <javac srcdir="${build.src}" includes="**/*.java" destdir="${build.dest}" encoding="${compile.encoding}" debug="${compile.debug}" optimize="${compile.optimize}" deprecation="${compile.deprecation}" includeAntRuntime="no" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter" includeantruntime="false" classpathref="project.class.path"> <compilerclasspath> <fileset dir="${env.ERRORPRONE_HOME}" includes="*.jar" /> </compilerclasspath> <compilerarg value="-Xlint:unchecked" /> <compilerarg value="-Xep:MultipleTopLevelClasses:OFF" /> </javac> </target> }} ** Scpタスク [#scp] #code{{ <path id="jsch.path"> <property name="scp.userid" value="${env.SCP_USERID}" /> <property name="scp.server" value="${env.SCP_SERVER}" /> <property name="scp.remotedir" value="${env.SCP_BASEDIR}" /> <pathelement location="${ant.home}/lib/ant-jsch.jar" /> <!-- http://www.jcraft.com/jsch/ からダウンロードして${ant.home}/lib/以下にコピー --> <pathelement location="${ant.home}/lib/jsch-0.1.53.jar" /> </path> <target name="scp"> <taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="jsch.path" /> <!-- scp.userなどは、環境変数またはant scp -Dscp.user=fooなどで指定 --> <scp todir="${scp.user}@${scp.server}:${scp.remotedir}" keyfile="${user.home}/.ssh/id_rsa" trust="yes"> <fileset refid="scp.upload.fileset" /> </scp> </target> }} * その他 [#others] ** `buildfile`オプション [#buildfile] `build.xml`ファイルを作ってコマンドプロンプトから`ant.bat`を実行します。引数が無い場合、カレントフォルダにある`build.xml`が使用されます。 ant 任意の`build.xml`を使いたいときは、以下のようなオプションを使って指定します。 ant -buildfile "c:\hoge project\hoge_build.xml" ant -f "c:\hoge project\hoge_build.xml" [[xyzzy]]などから、`ant.bat`をサブプロセス(KBD{C-x &})として実行する場合は、`-emacs`オプションを追加します。このオプションをつけると、[[xyzzy]]のバッファに表示されたエラー上でKBD{F10}キー(標準のキーバインドでは、KBD{F11}キーを押すと次のエラーへ移動)を押すだけで、そのエラーの出たファイルの該当する行に、自動的にジャンプすることができます。 ant -emacs -buildfile "c:\hoge\build.xml" ant -e -f "c:\hoge\build.xml" ** `build.xml`ファイル [#buildxml] ネットを検索すれば、いろんな`build.xml`が見つかるので、まずはその中からサンプルを選び、[http://ant.apache.org/manual/index.html マニュアル]([http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/index.html 日本語訳])を見ながら修正すると、手っ取り早く作成することができます。 - `build.xml`と`build.properties`のサンプル -- http://ateraimemo.com/data/ant/build.zip -- この`build.zip`ファイルには、ソースコードのほかに、`build.xml`と`build.properties`を添付しています。`build.properties`は、環境依存しそうな記述を`build.xml`から抜き出したプロパティファイルです。[http://www.jdom.org/ JDOM]などから拾ってきた記述を追加、編集したりして作成しています。実際に使用する場合は、`build.properties`ファイルを環境に合わせて編集してください。そのまま使用する場合は、`build.xml`を展開し、`src/java`フォルダ以下にソースコード(`Shift_JIS`)を置いてください。 - [[Java Swing Tips>Swing]]以下のサンプル -- http://ateraimemo.com/swing/toolbarlayout/src.zip -- このサイトの[[Java Swing Tips>Swing]]のサンプルに添付されている`build.xml`はすべて同一です。こちらは、「`build.xml`と`build.properties`のサンプル」とは違い、ソースコードは`UTF-8`で、`build.properties`ではなく、`xml`ファイル(`properties.xml`)をプロパティファイルとして使用しています。 * 参考リンク [#reference] - [http://ant.apache.org/ Apache Ant] - [http://ant.apache.org/manual/index.html Apache Ant Manual] - [http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=xyzzy xyzzy Antモード] * コメント [#comment] #comment #comment