LoginSignup
7
7

More than 5 years have passed since last update.

Antのmacrodef使い方メモ

Posted at

よく忘れるのでメモ。

基本

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro />
  </target>

  <macrodef name="my-macro">
    <sequential>
      <echo message="Hello macrodef!!" />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo] Hello macrodef!!

属性を定義する

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro hoge="属性" />
  </target>

  <macrodef name="my-macro">
    <attribute name="hoge" />
    <sequential>
      <echo message="hoge = @{hoge}" />
    </sequential>
  </macrodef>
</project>
execute:
     [echo] hoge = 属性

後述の「デフォルト値」を定義しないかぎり、属性は必須になる。

属性のデフォルト値を定義する

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro />
  </target>

  <macrodef name="my-macro">
    <attribute name="hoge" default="デフォルト値" />
    <sequential>
      <echo message="hoge = @{hoge}" />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo] hoge = デフォルト値

内部要素を定義する

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro>
      <hoge>
        <echo message="内部要素" />
      </hoge>
    </my-macro>
  </target>

  <macrodef name="my-macro">
    <element name="hoge" />
    <sequential>
      <hoge />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo] 内部要素

内部要素は、デフォルトは必須。

内部要素を任意入力にする

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro />
  </target>

  <macrodef name="my-macro">
    <element name="hoge" optional="true" />
    <sequential>
      <hoge />
    </sequential>
  </macrodef>
</project>
実行結果
execute:

内部テキストを定義する

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro>
      HOGEE
    </my-macro>
  </target>

  <macrodef name="my-macro">
    <text name="hoge" />
    <sequential>
      <echo message="@{hoge}" />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo]
     [echo]       HOGEE
     [echo]

内部テキストを任意入力にする

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro />
  </target>

  <macrodef name="my-macro">
    <text name="hoge" optional="true" />
    <sequential>
      <echo message="@{hoge}" />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo]

内部テキストの前後をトリムする

<?xml version="1.0" encoding="Shift_JIS"?>
<project basedir="." default="execute">
  <target name="execute">
    <my-macro>
      HOGEE
    </my-macro>
  </target>

  <macrodef name="my-macro">
    <text name="hoge" trim="true" />
    <sequential>
      <echo message="@{hoge}" />
    </sequential>
  </macrodef>
</project>
実行結果
execute:
     [echo] HOGEE

参考

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7