2011-06-30

Play! Scala なプロジェクトで Scaladoc を Ant で生成する。

play コマンドには javadoc コマンドはありますが、scaladoc コマンドはありません。ですので、Scaladoc を生成する場合は別の手段を用意しなければならないのですが、今回 Ant を使ってやってみました。

build.xml は以下の通りです。
<?xml version="1.0" encoding="UTF-8"?>
<project default="doc" basedir=".">
 <property environment="env"/>
 <property name="base.dir" value="."/>
 <property file="${base.dir}/build.properties"/>
 <fail message="PLAY_PATH environment variable or play.path property needs to reference Play! installation"
       unless="env.PLAY_PATH"/>
 <property name="play.path" value="${env.PLAY_PATH}"/>
 <echo message="play.path = ${play.path}"/>
 <import file="${play.path}/resources/application-build.xml"/>
 <fail message="SCALA_HOME environment variable or scala.home property needs to reference Scala installation"
       unless="env.SCALA_HOME"/>
 <property name="scala.home" value="${env.SCALA_HOME}"/>
 <echo message="scala.home = ${scala.home}"/>
 <property name="sources.dir" value="${base.dir}/app"/>
 <property name="doc.dir" value="${base.dir}/doc"/>

 <path id="build.classpath">
   <pathelement location="${scala.home}/lib/scala-library.jar"/>
   <fileset dir="${base.dir}/lib">
     <include name="*.jar"/>
   </fileset>
   <!-- Play! -->
   <fileset dir="${play.path}/framework">
     <include name="**/*.jar"/>
   </fileset>
   <!-- Play! Scala -->
   <fileset dir="${play.path}/modules/scala-${play.scala.version}/lib">
     <include name="*.jar"/>
   </fileset>
   <!--pathelement location="${build.dir}"/-->
 </path>

 <taskdef name="scaladoc" classname="scala.tools.ant.Scaladoc">
   <classpath>
     <pathelement location="${scala.home}/lib/scala-compiler.jar"/>
     <pathelement location="${scala.home}/lib/scala-library.jar"/>
   </classpath>
 </taskdef>

 <target name="doc">
   <mkdir dir="${doc.dir}"/>
   <scaladoc srcdir="${sources.dir}" destdir="${doc.dir}"
             deprecation="yes" unchecked="yes" 
             classpathref="build.classpath">
     <include name="**/*.scala"/>
   </scaladoc>
 </target>

 <target name="clean">
   <delete dir="${doc.dir}"/>
 </target>
</project>

build.properties に Play Scala のバージョンを指定して実行すると Scaladoc が生成されます。
play.scala.version=0.9.1