TITLE:Antのbasedirを子フォルダに変更して全部実行

Antのbasedirを子フォルダに変更して全部実行

#adsense2

編集者:Terai Atsuhiro
作成日:2013-02-18
更新日:2018-10-30 (火) 16:41:31

概要

basedirを現在のディレクトリ(${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で、basedirXXXに変更し、現在のディレクトリ(${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>

参考リンク

コメント