メインコンテンツまでスキップ

Ant

Antタスクの取得

KotlinはAnt用に3つのタスクを提供します。

  • kotlinc: JVMをターゲットとするKotlinコンパイラ
  • kotlin2js: JavaScriptをターゲットとするKotlinコンパイラ
  • withKotlin: 標準の javac Antタスクを使用する際にKotlinファイルをコンパイルするタスク

これらのタスクは、Kotlin Compilerアーカイブのlibフォルダーにあるkotlin-ant.jarライブラリで定義されています。 Antバージョン1.8.2以降が必要です。

KotlinのみのソースでJVMをターゲットにする

プロジェクトがKotlinソースコードのみで構成されている場合、プロジェクトをコンパイルする最も簡単な方法は、kotlincタスクを使用することです。

<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<kotlinc src="hello.kt" output="hello.jar"/>
</target>
</project>

ここで${kotlin.lib}は、Kotlinスタンドアロンコンパイラが解凍されたフォルダーを指します。

Kotlinのみのソースと複数のルートでJVMをターゲットにする

プロジェクトが複数のソースルートで構成されている場合は、パスを定義する要素としてsrcを使用します。

<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<kotlinc output="hello.jar">
<src path="root1"/>
<src path="root2"/>
</kotlinc>
</target>
</project>

KotlinとJavaソースでJVMをターゲットにする

プロジェクトがKotlinとJavaの両方のソースコードで構成されている場合、kotlincを使用することも可能ですが、タスクパラメータの繰り返しを避けるためには、withKotlinタスクを使用することをお勧めします。

<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<delete dir="classes" failonerror="false"/>
<mkdir dir="classes"/>
<javac destdir="classes" includeAntRuntime="false" srcdir="src">
<withKotlin/>
</javac>
<jar destfile="hello.jar">
<fileset dir="classes"/>
</jar>
</target>
</project>

コンパイルされるモジュールの名前をmoduleName属性として指定することもできます。

<withKotlin moduleName="myModule"/>

単一のソースフォルダーでJavaScriptをターゲットにする

<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<kotlin2js src="root1" output="out.js"/>
</target>
</project>

プレフィックス、ポストフィックス、およびソースマップオプションを使用してJavaScriptをターゲットにする

<project name="Ant Task Test" default="build">
<taskdef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<kotlin2js src="root1" output="out.js" outputPrefix="prefix" outputPostfix="postfix" sourcemap="true"/>
</target>
</project>

単一のソースフォルダーとmetaInfoオプションを使用してJavaScriptをターゲットにする

metaInfoオプションは、変換の結果をKotlin/JavaScriptライブラリとして配布する場合に便利です。 metaInfotrueに設定されている場合、コンパイル中にバイナリメタデータを含む追加のJSファイルが作成されます。 このファイルは、変換の結果とともに配布する必要があります。

<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>

<target name="build">
<!-- out.meta.js が作成され、バイナリメタデータが含まれます -->
<kotlin2js src="root1" output="out.js" metaInfo="true"/>
</target>
</project>

参考文献

要素と属性の完全なリストを以下に示します。

kotlincとkotlin2jsに共通の属性

NameDescriptionRequiredDefault Value
srcコンパイルするKotlinソースファイルまたはディレクトリYes
nowarnすべてのコンパイル警告を抑制しますNofalse
noStdlibKotlin標準ライブラリをクラスパスに含めませんNofalse
failOnErrorコンパイル中にエラーが検出された場合、ビルドを失敗させますNotrue

kotlinc属性

NameDescriptionRequiredDefault Value
output出力先ディレクトリまたは.jarファイル名Yes
classpathコンパイルクラスパスNo
classpathrefコンパイルクラスパス参照No
includeRuntimeoutputが.jarファイルの場合、Kotlinランタイムライブラリをjarに含めるかどうかNotrue
moduleNameコンパイルされるモジュールの名前Noターゲットの名前(指定されている場合)またはプロジェクト

kotlin2js属性

NameDescriptionRequired
output出力先ファイルYes
librariesKotlinライブラリへのパスNo
outputPrefix生成されたJavaScriptファイルに使用するプレフィックスNo
outputSuffix生成されたJavaScriptファイルに使用するサフィックスNo
sourcemapソースマップファイルを生成するかどうかNo
metaInfoバイナリ記述子を持つメタデータファイルを生成するかどうかNo
mainコンパイラが生成したコードでmain関数を呼び出す必要があるかどうかNo

生のコンパイラ引数を渡す

カスタムの生のコンパイラ引数を渡すには、valueまたはline属性を持つ<compilerarg>要素を使用できます。 これは、<kotlinc><kotlin2js>、および<withKotlin>タスク要素内で、次のように行うことができます。

<kotlinc src="${test.data}/hello.kt" output="${temp}/hello.jar">
<compilerarg value="-Xno-inline"/>
<compilerarg line="-Xno-call-assertions -Xno-param-assertions"/>
<compilerarg value="-Xno-optimize"/>
</kotlinc>

使用できる引数の完全なリストは、kotlinc -helpを実行すると表示されます。