Kotlin 為 Ant 提供了三個任務(wù):
這仨任務(wù)在 kotlin-ant.jar 庫中定義,該庫位于 Kotlin 編譯器的 lib 文件夾中
當項目由 Kotlin 專用源代碼組成時,編譯項目的最簡單方法是使用 kotlinc 任務(wù)
<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 獨立編譯器所在文件夾。
如果項目由多個源代碼根組成,那么使用 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 源代碼組成,雖然可以使用 kotlinc 來避免任務(wù)參數(shù)的重復(fù),但是
建議使用 withKotlin 任務(wù)
<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>
要為 <withKotlin>
指定額外的命令行參數(shù),可以使用嵌套的 <compilerArg>
參數(shù)。
當運行 kotlinc -help
時,會顯示可以使用的參數(shù)的完整列表。
還可以將正在編譯的模塊的名稱指定為 moduleName
屬性:
<withKotlin moduleName="myModule">
<compilerarg value="-no-stdlib"/>
</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">
<kotlin2js src="root1" output="out.js"/>
</target>
</project>
<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>
如果要將翻譯結(jié)果作為 Kotlin/JavaScript 庫分發(fā),那么 metaInfo
選項會很有用。
如果 metaInfo
設(shè)置為 true
,則在編譯期間將創(chuàng)建具有
二進制元數(shù)據(jù)的額外的 JS 文件。該文件應(yīng)該與翻譯
結(jié)果一起分發(fā)。
<project name="Ant Task Test" default="build">
<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>
<target name="build">
<!-- 會創(chuàng)建 out.meta.js,其中包含二進制元數(shù)據(jù) -->
<kotlin2js src="root1" output="out.js" metaInfo="true"/>
</target>
</project>
元素和屬性的完整列表如下
名稱 | 描述 | 必需 | 默認值 |
---|---|---|---|
src |
要編譯的 Kotlin 源文件或目錄 | 是 | |
nowarn |
禁止所有編譯警告 | 否 | false |
noStdlib |
不要將 Kotlin 標準庫包含進 classpath | 否 | false |
failOnError |
在編譯期間檢測到錯誤時,會導致構(gòu)建失敗 | 否 | true |
名稱 | 描述 | 必需 | 默認值 |
---|---|---|---|
output |
目標目錄或 .jar 文件名 | 是 | |
classpath |
編譯類路徑 | 否 | |
classpathref |
編譯類路徑引用 | 否 | |
includeRuntime |
Kotlin 運行時庫是否包含在 jar 中,如果 output 是 .jar 文件的話 |
否 | true |
moduleName |
編譯的模塊的名稱 | 否 | 目標(如果指定的話)或項目的名稱 |
名稱 | 描述 | 必需 |
---|---|---|
output |
目標文件 | 是 |
libraries |
Kotlin 庫的路徑 | 否 |
outputPrefix |
生成的 JavaScript 文件所用前綴 | 否 |
outputSuffix |
生成的 JavaScript 文件所用后綴 | 否 |
sourcemap |
是否要生成 sourcemap 文件 | 否 |
metaInfo |
是否要生成具有二進制描述符的元數(shù)據(jù)文件 | 否 |
main |
編譯器是否生成調(diào)用 main 函數(shù)的代碼 | 否 |