Skip to content

Ant

Kotlin 2.2.0以降、KotlinにおけるAntビルドシステムのサポートは非推奨となります。 Kotlin 2.3.0ではAntサポートを削除する予定です。

しかし、もしAntの外部メンテナーになることにご興味がある場合は、 こちらのYouTrack課題にコメントを残してください。

Antタスクの取得

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

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

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

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

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

xml
<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を要素として使用します。

xml
<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タスクの使用を推奨します。

xml
<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属性として指定することもできます。

xml
<withKotlin moduleName="myModule"/>

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

xml
<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>

Prefix、PostFix、およびsourcemapオプションでJavaScriptをターゲットにする

xml
<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ファイルが作成されます。このファイルは翻訳結果と一緒に配布する必要があります。

xml
<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 will be created, which contains binary metadata -->
        <kotlin2js src="root1" output="out.js" metaInfo="true"/>
    </target>
</project>

リファレンス

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

kotlincとkotlin2jsに共通の属性

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

kotlincの属性

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

kotlin2jsの属性

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

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

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

xml
<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を実行すると表示されます。