#topicpath
----
**AntのTIPS集 [#zfe6185a]
#contents




*** AntでFTPタスクを使用したい [#wbf21321]
${ant_home}/lib/ に以下のライブラリを入れる必要があります。
 ant 1.5 まではNetComponent.jar
 ant 1.6 からはcommons-net-1.2.2.jar
1.6.1を使ってるのにNetComponentを配置して、うごかねーって思ってたら、必要ライブラリが変わったんですね。

で実際のタスクの書き方は、
 <target name="cvs.ftp" depends="init">
   <ftp server="[ホスト名]"
     remotedir="[サーバのディレクトリ]"
     userid="xxxx"
     password="xxxx" >
     <fileset dir="${report.root}">
       <include name="changelog.html" />
     </fileset>
   </ftp>
 </target>
てな感じ。


***日付処理(n日前の日付をプロパティにセットする、とか) [#u2fa543f]
 <tstamp>
  <format property="TODAY" pattern="yyyy/MM/dd" />
 </tstamp>
 
 <!-- 7日前/10日後を定義する処理 -->
 <propertyfile file="date.properties">
   <entry key = "TODAY-7" type = "date" value = "7"  default = "${TODAY}" pattern = "yyyy/MM/dd" operation = "-" />
   <entry key = "TODAY+10" type = "date" value = "10"  default = "${TODAY}" pattern = "yyyy/MM/dd" operation = "+" />
 </propertyfile>
 <property file="date.properties" />
 <delete file="date.properties" />

もっとスマートなやり方がありました。
 <tstamp>
   <format property="TODAY" pattern="yyyy/MM/dd"/>
   <!-- 7日前/10日後を定義する処理 -->
   <format property="TODAY-n" pattern="yyyy/MM/dd" offset="-${cvs.num}"/>
   <format property="TODAY+10" pattern="yyyy/MM/dd" offset="10"/>
   <format property="lastModified" pattern="yyyy/MM/dd HH:mm:ss"/>
 </tstamp>

***コンパイル [#bba0e48f]
 <target name="javac" depends="init">
  <mkdir dir="${class.dir}" />
  <javac srcdir="${src.dir}" destdir="${class.dir}" encoding="${compile.encoding}" 
 memoryInitialSize="256M" fork="yes" memoryMaximumSize="256M">
   <!-- usage : excludes="kino/hoge.org/**" -->
   <classpath refid="project.class.path" />
  </javac>
 </target>
ちなみにクラスパスなどは
 <path id="project.class.path">
  <pathelement path="${java.class.path}" />
  <pathelement path="${class.dir}" />
  <pathelement path="${jar.dir}" />
 
  <pathelement location="${log.jar}" />
  <pathelement location="${swt.jar}" />
 </path>
とかすればよい。

***ディレクトリ配下のすべてのjarにクラスパスを通す [#rf0699bf]
 <path id="all.classes">
  <fileset dir="${jar.dir}">
   <include name="**/*.jar"/>
  </fileset>
 </path>
といった書き方をすると、
 <!-- Javaテストプログラムの実行 -->
 <target name="java" depends="javac">
  <java classname="kino.test.TestApp2" fork="yes" maxmemory="256M" >
   <arg line="hogehoge" />
   <classpath refid="all.classes" />
  </java>
 </target>
と書くことができる。こうするとすべてのjarファイルにクラスパスを通したことになる。

*** javacタスクで、Ant自身が通したクラスパスを無効にする。 [#b6e66809]
題名の通り、デフォルトは有効なので(ようするにxercesImpl.jarなどは、${ANT_HOME}/lib/にあるため、クラスパスを通さなくてもコンパイルエラーにならない)
それを無効にする方法。javacタスクのオプションで
 includeAntRuntime="no"
とすればよい。

***AntにVM引数を渡す [#ua9bb3b8]
環境変数 ANT_OPTS を指定すればよいみたい。例えばJavaのメモリ使用量を設定するには
 export ANT_OPTS=-Xmx512m
など。


***タスクの一覧表示 [#k931a9c8]
 >ant -projecthelp
とすると、プロジェクトの一覧が表示される。以下が結果
 Buildfile: build.xml
 
          moneytest build file
 
 Main targets:
 
 
 Subtargets:
 
  clean
  clover.view
  code
  hist.report
  record.point
  report.html
  test
  with.clover
 
 Default target: code


***外部タスクを使う [#s94dc94e]
 ${ANT_HOME}/lib/
にjarファイルを置く必要がある。

***独自タスクの定義 [#k87e203e]
基本的にはtaskdefタグで行う。下記がサンプル。
 <taskdef name="java2html" classname="com.java2html.Java2HTMLTask">
 	<classpath>
 		<pathelement location="${j2h.jar}" /> 
 	</classpath> 上でそのタスクが存在するjarを指定。
 </taskdef>



***Java2html(旧バージョン) [#y9111d4a]
${j2h.jar}は、j2h.jarを指定(ファイルはhttp://www.java2html.com/より取得)((Java2htmlは新しいバージョンができて、Ant用タスクが定義されたりと、上記内容は古いものとなっています。))

 <target name="j2h" depends="javac">
 	<mkdir dir="${j2h.dir}"/>
 	<java classname="j2h" fork="yes" maxmemory="256M" >
 		<arg line="-js ${src.dir} -d ${j2h.dir} -t 2 -m 4" />
 		<classpath>
 			<pathelement location="${j2h.jar}" />
 		</classpath>
 	</java>
 </target>





----
この記事は
#vote(おもしろかった[2],そうでもない[3])
-ant --noconfig てなんだっけ。。。 -- [[きの]] &new{2006-12-18 09:34:30 (月)};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS