Kotlin 为 Ant 提供了三个任务:
这仨任务在 kotlin-ant.jar 库中定义,该库位于 Kotlin 编译器的 lib 文件夹中 需要 Ant 1.8.2+ 版本。
当项目由 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.lib}
如果项目由多个源代码根组成,那么使用 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 来避免任务参数的重复,但是建议使用 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 属性:
moduleName
<withKotlin moduleName="myModule"/>
<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>
如果要将翻译结果作为 Kotlin/JavaScript 库分发,那么 metaInfo 选项会很有用。 如果 metaInfo 设置为 true,则在编译期间将创建具有二进制元数据的额外的 JS 文件。该文件应该与翻译结果一起分发:
metaInfo
true
<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>
元素和属性的完整列表如下:
src
nowarn
noStdlib
failOnError
output
classpath
classpathref
includeRuntime
libraries
outputPrefix
outputSuffix
sourcemap
main
如需传递原始编译器参数,可以使用带 value 或 line 属性的 <compilerarg> 元素。 可以放在 <kotlinc>、 <kotlin2js> 与 <withKotlin> 任务元素内,如下所示:
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 时,会显示可以使用的参数的完整列表。
kotlinc -help
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8