Object Design
Home > Index > ANTの中でJavaScriptを使う

ANTの中でJavaScriptを使う

DocbookからFrameMakerでフォーマットするXMLに変換するビルドプロセスで 現在はMakeを使っているのだが、ANTを調べてみると、ANTでXSLTタスクがあり、 ANTからJavaScriptもつかえることが判明。

CygwinやLinuxでビルドするので、MakeからANTに移行すれば、 JavaVMさえあればOKになるので、これは魅力的です。

今回は、ANT内でJavaScriptを使う方法のメモ。

TOC

Using JavaScript in ANT その1

お約束のHelloWorld.

build.xml

<?xml version="1.0" encoding="UTF-8" ?>

<project default="main" >

    <target name="main" >
        <script language="javascript">
        <![CDATA[
            print( "Hello World." );
        ]]>
        </script>
    </target>

</project>

実行

$ ant

Buildfile: build.xml

main:
   [script] Hello World.

Java6(java version "1.6.0_07") には、JavaScriptエンジンが付属しているのか?ANTをインストールしただけで、 作動しました。

Using JavaScript in ANT その2

今度はもう少し実用的な例。 XMLをパースして処理するつもりなので、JavaScriptからJDOMを使う場合。 ANTで設定したプロパティにJavaScriptからアクセスする。

build.xml

<?xml version="1.0" encoding="UTF-8" ?>

<project default="main" >

    <target name="init" >
        <property name="testfile" value="test.xml" />
    </target>

    <target name="main" depends="init" >
        <script language="javascript" classpath="jdom.jar">
        <![CDATA[
            importPackage(java.io);
            importPackage(org.jdom);
            importPackage(org.jdom.input);

            var f=project.getProperty("testfile");
            var inf=File(f);
            print( inf.getAbsolutePath() );
            var doc=SAXBuilder().build(inf);
            var eRoot=doc.getRootElement();
            var list=eRoot.getChildren()
            for(var i=0; i<list.size(); i++){
                print( list.get(i).getChildText("title") );
            }
        ]]>
        </script>
    </target>

</project>

事前準備

test.xml

<?xml version="1.0" encoding="UTF-8" ?>
<blog>
    <entry>
        <title>Using JavaScript in Ant</title>
    </entry>
    <entry>
        <title>Using JDOM in Ant</title>
    </entry>
    <entry>
        <title>Using Python in Ant</title>
    </entry>
</blog>

実行

ANTのプロパティ testfile にJavaScriptからアクセスして、JDOMでパース。 /blog/entry/title 要素のテキストを列挙する。

$ ant

Buildfile: build.xml

init:

main:
   [script] /home/moca/osimablog/memo/src/ant/test.xml
   [script] Using JavaScript in Ant
   [script] Using JDOM in Ant
   [script] Using Python in Ant

次のステップ

JavaScriptの代わりにJythonを使いたいのだが、どうもうまくいかない...orz

こんな感じで使いたいのだが...

<project default="main" >
    <target name="main" >
        <script language="jython" >
        <![CDATA[
            print "hello jython"
        ]]>
        </script>
    </target>
</project>
関連キーワード