Ant のバックアップの現在との差分(No.13)
Ant
#adsense2
編集者:Terai Atsuhiro~
作成日:2003-09-25
更新日:2022-09-30 (金) 20:13:52
- keywords: [Ant] description: JavaベースのビルドツールであるAntの使い方についてメモしています。 author: aterai pubdate: 2003-09-25
- Ant
- 概要
- インストールと環境変数の設定
- タスクのサンプル
- AntのConditionタスクで条件分岐を行う
- AntのScriptタスク中でif文を使った条件分岐を行う
- AntのTaskを自作
- AntのScriptタスクでJavaScriptを使用する
- インストールと環境変数の設定
- AntのJarタスクで実行可能なJarファイルの作成
- AntでOutOfMemoryErrorが発生する場合
- buildfileオプション
- AntのプロパティファイルをXMLにする
- Antで子フォルダのbuild.xmlを全部実行
- Antのbasedirを子フォルダに変更して全部実行
- AntでFindBugsを実行する
- AntでPMDを実行する
- AntでCheckstyleを実行する
- AntでのコンパイルにErrorProneを使用する
- Antタスクの定義をスクリプト言語を使用して行う
- targetのサンプル
- その他
- 参考リンク
- コメント
- コメント
概要
Ant
は、Java
ベースのビルドツールです。理論的には、make
の欠点がないmake
の一種です(Ant
翻訳より引用)。
- Ant
- 概要
- インストールと環境変数の設定
- タスクのサンプル
- AntのConditionタスクで条件分岐を行う
- AntのScriptタスク中でif文を使った条件分岐を行う
- AntのTaskを自作
- AntのScriptタスクでJavaScriptを使用する
- インストールと環境変数の設定
- AntのJarタスクで実行可能なJarファイルの作成
- AntでOutOfMemoryErrorが発生する場合
- buildfileオプション
- AntのプロパティファイルをXMLにする
- Antで子フォルダのbuild.xmlを全部実行
- Antのbasedirを子フォルダに変更して全部実行
- AntでFindBugsを実行する
- AntでPMDを実行する
- AntでCheckstyleを実行する
- AntでのコンパイルにErrorProneを使用する
- Antタスクの定義をスクリプト言語を使用して行う
- targetのサンプル
- その他
- 参考リンク
- コメント
- コメント
Java
ベースのビルドツールであるAnt
の使い方についてメモしています。
概要(Antとは)
Antは、Javaベースのビルドツールです。理論的には、makeの欠点がないmakeの一種です(Ant翻訳より引用)。インストールと環境変数の設定
Apache Ant - Welcomeなどからダウンロードしたアーカイブを展開して、そこを環境変数ANT_HOME
に設定します。「システムのプロパティ→詳細設定→環境変数」で、ANT_HOME
を新規作成、もしくは編集してください。
このページでは、JavaベースのビルドツールであるAntの使い方についてメモしています。
build.xml、タスクなどのサンプル
build.xml、タスクなどのサンプルや、その他のちょっとしたTipsなどを、以下別ページにまとめています。 また、%ANT_HOME%\bin\ant.bat
を使うために、パスを通しておきます。「システムのプロパティ→詳細設定→環境変数」で、Path
を編集してください。
AntのConditionタスクで条件分岐を行う
Conditionタスクを使って、例えばディレクトリの有無などによる条件で、Targetタスクを実行するかどうかを振り分けます。タスクのサンプル
build.xml
、タスクなどのサンプルや、その他のちょっとしたTips
などを、以下別ページにまとめています。
AntのScriptタスク中でif文を使った条件分岐を行う
Conditionタスクの条件が複雑になるようなら、<script language="javascript">タスクなどでif文を使う方法もあります。AntのConditionタスクで条件分岐を行う
Condition
タスクを使って、例えばディレクトリの有無などによる条件で、Target
タスクを実行するかどうかを振り分けます。
AntのTaskを自作
AntのTaskを自作し、これを利用する方法をテストします。AntのScriptタスクでJavaScriptを使用する
AntのScriptタスクでJavaScriptを使用し、簡単なタスクを作成、実行します。AntのScriptタスク中でif文を使った条件分岐を行う
Condition
タスクの条件が複雑になるようなら、<script language="javascript">
タスクなどでif
文を使う方法もあります。
AntのJarタスクで実行可能なJarファイルの作成
Antを使って、Windows環境などでダブルクリックすると起動するJarファイルを作成します。AntでOutOfMemoryErrorが発生する場合
Antを実行するとOutOfMemoryErrorが発生する場合の処置方法について解説しています。AntのTaskを自作
Ant
のTask
を自作し、これを利用する方法をテストします。
AntのプロパティファイルをXMLにする
プロパティファイルのエンコーディングなどを気にせずに使えるように、AntのプロパティファイルをXMLにしてみます。Antで子フォルダのbuild.xmlを全部実行
Subantタスクを使って、一度に全部同じターゲットで子フォルダのbuild.xmlを実行します。AntのScriptタスクでJavaScriptを使用する
Ant
のScript
タスクでJavaScript
を使用し、簡単なタスクを作成、実行します。
インストールと環境変数の設定
Apache Ant - Welcomeなどからダウンロードしたアーカイブを展開して、そこを環境変数"ANT_HOME"に設定します。「システムのプロパティ→詳細設定→環境変数」で、"ANT_HOME"を新規作成、もしくは編集してください。AntのJarタスクで実行可能なJarファイルの作成
Ant
を使って、Windows
環境などでダブルクリックすると起動するJar
ファイルを作成します。
また、%ANT_HOME%\bin\ant.batを使うために、パスを通しておきます。「システムのプロパティ→詳細設定→環境変数」で、"Path"を編集してください。
AntでOutOfMemoryErrorが発生する場合
Ant
を実行するとOutOfMemoryError
が発生する場合の処置方法について解説しています。
buildfileオプション
build.xmlファイルを作ってコマンドプロンプトからant.batを実行します。引数が無い場合、カレントフォルダにあるbuild.xmlが使用されます。AntのプロパティファイルをXMLにする
プロパティファイルのエンコーディングなどを気にせずに使えるように、Ant
のプロパティファイルをXML
にしてみます。
Antで子フォルダのbuild.xmlを全部実行
Subant
タスクを使って、一度に全部同じターゲットで子フォルダのbuild.xml
を実行します。
Antのbasedirを子フォルダに変更して全部実行
basedir
をカレントディレクトリ(${user.dir}
)とは別の場所に指定して、ant.bat
を実行します。
AntでFindBugsを実行する
Ant
からFindBugs
を実行します。
AntでPMDを実行する
Ant
からPMD
を実行します。
AntでCheckstyleを実行する
Ant
からCheckstyle
を実行します。
AntでのコンパイルにErrorProneを使用する
Ant
でのコンパイルにErrorProne
を使用して、コードチェックを強化します。
Antタスクの定義をスクリプト言語を使用して行う
スクリプト言語(Javascript
)を使用して、FTPS
(File Transfer Protocol over SSL/TLS
)で通信するAnt
タスクを定義します。
targetのサンプル
Scpタスク
#spanend
<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>
#spanadd
その他
Java 9 マイグレーション
-
javac
タスク-
error: package com.sun.java.swing.plaf.windows is not visible
などとエラーになる場合は、コンパイル引数に--add-exports=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED
を追加 -
error: package javax.activation is not visible
の場合は、コンパイル引数に--add-modules=java.activation
を追加#spanend #spanadd <target name="compile" depends="prepare-src, prepare-resource, prepare-web"> #spanend <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"> <compilerarg value="-J-Dfile.encoding=${compile.encoding}" /> <compilerarg value="-J-Duser.language=${user.language}" /> <compilerarg value="--add-exports=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED" /> <compilerarg value="--add-modules=java.activation" /> <compilerarg value="-Xlint:unchecked" /> </javac> #spanadd </target> #spanend #spanadd
-
-
java
タスク-
Exception in thread "AWT-EventQueue-0" java.lang.IllegalAccessError: superclass access check failed: class example.WindowsClippedTitleTabbedPaneUI (in unnamed module @0x396038de) cannot access class com.sun.java.swing.plaf.windows.WindowsTabbedPaneUI (in module java.desktop) because module java.desktop does not export com.sun.java.swing.plaf.windows to unnamed module @0x396038de
のようなエラーになる場合は--add-opens=module/package=ALL-UNNAMED
などをJVM
引数に追加 -
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/activation/ActivationDataFlavor
などのエラーがでる場合は、--add-modules=java.activation
などをJVM
引数に追加#spanend #spanadd <target name="run" depends="compile"> #spanend <java classname="${main.class}" classpathref="project.class.path" fork="true"> <jvmarg value="--add-opens=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED" /> <jvmarg value="--add-modules=java.activation" /> </java> #spanadd </target> #spanend #spanadd
-
buildfile
オプション
build.xml
ファイルを作ってコマンドプロンプトからant.bat
を実行します。引数が無い場合、カレントフォルダにあるbuild.xml
が使用されます。
ant任意のbuild.xmlを使いたいときは、以下のようなオプションを使って指定します。 任意の
build.xml
を使いたいときは、以下のようなオプションを使って指定します。
ant -buildfile "c:\hoge project\hoge_build.xml" ant -f "c:\hoge project\hoge_build.xml"xyzzyなどから、ant.batをサブプロセス(C-x &)として実行する場合は、-emacsオプションをつけてやります。このオプションをつけると、xyzzyのバッファに表示されたエラー上で"F10"キー*1を押すだけで、そのエラーの出たファイルの該当する行に、自動的にジャンプすることができます。 xyzzyなどから、
ant.bat
をサブプロセス(C-x &)として実行する場合は、-emacs
オプションを追加します。このオプションをつけると、xyzzyのバッファに表示されたエラー上でF10キー(標準のキーバインドでは、F11キーを押すと次のエラーへ移動)を押すだけで、そのエラーの出たファイルの該当する行に、自動的にジャンプすることができます。
ant -emacs -buildfile "c:\hoge\build.xml" ant -e -f "c:\hoge\build.xml"
build.xmlの勉強方法
ネットを検索すれば、いろんなbuild.xmlが見つかるので、まずはその中からサンプルを選び、マニュアル(日本語訳)を見ながら修正すると、手っ取り早く作成することができます。build.xml
ファイル
-
build.xml
とbuild.properties
のサンプル- https://ateraimemo.com/data/ant/build.zip
- この
build.zip
ファイルには、ソースコードのほかに、build.xml
とbuild.properties
を添付しています。build.properties
は、環境依存しそうな記述をbuild.xml
から抜き出したプロパティファイルです。JDOMなどから拾ってきた記述を追加、編集したりして作成しています。実際に使用する場合は、build.properties
ファイルを環境に合わせて編集してください。そのまま使用する場合は、build.xml
を展開し、src/java
フォルダ以下にソースコード(Shift_JIS
)を置いてください。
- build.xmlとbuild.propertiesのサンプル
- http://terai.xrea.jp/data/ant/build.zip
- このbuild.zipファイルには、ソースコードのほかに、build.xmlとbuild.propertiesを添付しています。build.propertiesは、環境依存しそうな記述をbuild.xmlから抜き出したプロパティファイルです。JDOMなどから拾ってきた記述を追加、編集したりして作成しています。実際に使用する場合は、build.propertiesファイルを環境に合わせて編集してください。そのまま使用する場合は、build.xmlを展開し、src\javaフォルダ以下にソースコード(Shift_JIS)を置いてください。
- Java Swing Tips以下のサンプル
- https://ateraimemo.com/swing/toolbarlayout/src.zip
- このサイトのJava Swing Tipsのサンプルに添付されている
build.xml
はすべて同一です。こちらは、「build.xml
とbuild.properties
のサンプル」とは違い、ソースコードはUTF-8
で、build.properties
ではなく、xml
ファイル(properties.xml
)をプロパティファイルとして使用しています。
- Java Swing Tips以下のサンプル
- http://terai.xrea.jp/swing/toolbarlayout/src.zip
- このサイトのJava Swing Tipsのサンプルに添付されているbuild.xmlはすべて同一です。こちらは、「build.xmlとbuild.propertiesのサンプル」とは違い、ソースコードはUTF-8で、build.propertiesではなく、xmlファイル(properties.xml)をプロパティファイルとして使用しています。