Antメモ

2002/11/16 作成

様々なタスク

ここでは、Antのタスクをいろいろ触ってみます。

XMLの妥当性検査(XMLValidateタスク)

ejb-jar.xmlやstruts-config.xmlで、 デプロイしないと、実行しないとエラーがわからない。 って、いうのは手間ですよね。 コンパイルエラーみたいなもんなんで、編集時に すぐエラー表示してもらいたいもんです。

探してみたら、まさにそのものがありました

オプショナルタスクのXmlValidateタスクです。
いやぁ、そんなのあったんですね。。。今日知りました。

<xmlvalidate file="${res}/META-INF/ejb-jar.xml" 
  warn="no"/>

MS932なのにShift_JISって書いてるよ、って毎回警告されるのは 警告noで消えました(消していいのかどうかわかりませんが。。。)。

本当はIDE上で右クリック->Validateとかいう風に実行したいんすけど、 まあ、これでも十分、便利ですよね。

ディレクトリ以下の.jarをクラスパスに含める

クラスパスに含めるjarがたくさんあって、しかもたまに増えたり、減ったりする。 あるディレクトリ以下のjarをクラスパスに含めたい場合があります。

javaコマンドだと、
javac -extdirs=hoge SomeClass.java
java -Djava.ext.dirs=hoge SomeClass
というオプションもありますが、Antだとどうする?

Antのパス類似構造を使って、こんな感じで書くことができます。

  <path id="ejb.classpath">
    <fileset dir="${jboss.client}">
      <include name="**/*.jar" />
    </fileset>
  </path>

  <target name="compile">
    <javac srcdir="${src}"
      destdir="${classes}"
      classpathref="ejb.classpath"
      debug="on"
    />
  </target>

  <target name="run">
    <java classname="hello.Client" fork="yes">
      <classpath>
        <pathelement path="${classes}"/>
        <path refid="ejb.classpath"/>
      </classpath>
    </java>
  </target>

システムコマンドの実行(Execタスク)

OSに依存しないAntですが、OSに依存したコマンドを実行したい場合があります。
そういうときにはExecタスクを使います。

基本はAntマニュアルのサンプルです。

  <exec executable="cmd.exe" os="Windows XP">
    <arg line="/c dir"/>
  </exec>

引数の /c というのはWindowsのcmd.exeの引数で、
"/cの後のコマンドを実行した後終了"という意味です。
(意味は、DOS窓で、cmd /? でヘルプが出る)

OSをちゃんと指定しないと動かないみたいです。 OSはシステムのプロパティーで出てくるos.nameの値です。
Javaからこんな感じでシステム環境変数をリストして確認できます。

System.getProperties().list(System.out);

で、ちゃんと動いたら、やりたいことを記述するといいかな、と思われます。

  <exec executable="cmd.exe" os="Windows XP">
    <arg line="/c C:/apps/j2sdkee1.3.1/bin/verifier ${build}/ejb06b.jar -o${build}/verify -f"/>
  </exec>

次へ


もどる