Ant/basedir のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Ant/basedir へ行く。
- title: Antのbasedirを子フォルダに変更して全部実行 author: aterai pubdate: 2014-02-18T18:53:02+09:00 description: basedirをカレントディレクトリ(Working directory, ${user.dir})とは別の場所に指定して、ant.batを実行します。
概要
basedir
をカレントディレクトリ(Working directory
, ${user.dir}
)とは別の場所に指定して、ant.bat
を実行します。
サンプル
## 子フォルダAuxiliaryLookAndFeelをbasedirにしてant findbugsを実行
ant clean findbugs -Dbasedir=AuxiliaryLookAndFeel
## .gitなどを除く子フォルダをbasedirにしてant findbugsを実行
for i in $(find . -maxdepth 1 -type d ! -name ".*"); do
ant -f foo.xml -Dbasedir=$i clean findbugs
done
## Aで始まる子フォルダをbasedirにしてant findbugsを実行
for i in $(find . -maxdepth 1 -type d -name "A*"); do ant -f build.xml -Dbasedir=$i clean findbugs; done
<?xml version="1.0" encoding="UTF-8"?>
<project name="swingall" default="clean" basedir=".">
<!-- ... 省略 ... -->
<condition property="have.findbugs">
<and>
<available classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<available file="${env.FINDBUGS_HOME}" />
</and>
</condition>
<target name="findbugs" depends="compile" if="have.findbugs">
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<mkdir dir="${build.reports}" />
<echo>userdir: ${user.dir}</echo>
<echo>basedir: ${basedir}</echo>
<findbugs home="${env.FINDBUGS_HOME}" effort="max" reportLevel="low"
excludeFilter="${user.dir}/excludefilter.xml"
output="xml" outputFile="${build.reports}/findbugs.xml" >
<auxClasspath refid="project.class.path" />
<sourcePath path="${src.dir}" />
<class location="${build.dest}" />
</findbugs>
</target>
</project>
解説
-Dbasedir=XXX
で、basedir
をXXX
に変更し、カレントディレクトリ(${user.dir}
)にあるfoo.xml
ビルドファイルのfindbugs
タスクを実行しています。
- メモ
XXX
ディレクトリ内でbasedir
を変更せずに実行すると、<project name="swingall" default="clean" basedir=".">
と指定しているので、${user.dir}
と${basedir}
は等しくなるfindbugs
タスクのexcludeFilter
オプションは、例えばexcludeFilter="excludefilter.xml"
と省略すると${basedir}
基準のexcludeFilter="${basedir}/excludefilter.xml"
と同じになるpmd
タスクのrulesetfiles
オプションは、例えばrulesetfiles="ruleset.xml"
と省略すると${user.dir}
基準のrulesetfiles="${user.dir}/ruleset.xml"
と同じになる
<target name="pmd">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
<mkdir dir="${build.reports}" />
<pmd rulesetfiles="ruleset.xml" encoding="${compile.encoding}">
<sourceLanguage name="java" version="1.7"/>
<classpath refid="project.class.path" />
<formatter type="xml" toFile="${build.reports}/pmd.xml" />
<formatter type="text" toConsole="true" />
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
</pmd>
</target>