Ant
Получение задач Ant
Kotlin предлагает три задачи для Ant:
- kotlinc: компилятор Kotlin для работы с JVM;
- kotlin2js: компилятор Kotlin для работы с JavaScript;
- withKotlin: компиляция файлов Kotlin при использовании стандартной задачи javac Ant.
Эти задачи определены в библиотеке kotlin-ant.jar, которая находится в папке lib для компилятора Kotlin Ant версии 1.8.2+.
Использование в JVM только с исходным кодом Kotlin
Когда проект состоит исключительно из исходного кода 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.
Использование в JVM с исходным кодом 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>
Использование в JVM с исходным кодом Kotlin и Java
Если проект состоит из исходного кода Kotlin и Java, то для избежания повторения параметров задачи рекомендуется использовать задачу withKotlin везде, где возможно использовать 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">
        <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 с Prefix, PostFix и исходными параметрами
<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>
Использование в JavaScript с помощью папки с одним исходным кодом и метаинформацией
Параметр metaInfo окажется полезен, если требуется распространять результат перевода как библиотеку Kotlin / JavaScript. Если в metaInfo было установлено значение true, то во время компиляции будет создан дополнительный 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 will be created, which contains binary metadata -->
        <kotlin2js src="root1" output="out.js" metaInfo="true"/>
    </target>
</project>
Рекомендации
Полный список элементов и атрибутов приведен ниже:
Общие для kotlinc и kotlin2js атрибуты
| Название | Описание | Необходимо | Значение по умолчанию | 
|---|---|---|---|
| src | Исходный файл или каталог Kotlin для компиляции | Да | |
| nowarn | Подавляет все предупреждения на этапе компиляции | Нет | false | 
| noStdlib | Не включает стандартную библиотеку Kotlin в путь к классам | Нет | false | 
| failOnError | Не дает завершить сборку, если во время компиляции обнаружены ошибки | Нет | true | 
Атрибуты kotlinc
| Название | Описание | Необходимо | Значение по умолчанию | 
|---|---|---|---|
| output | Каталог назначения или имя jar-файла | Да | |
| classpath | Путь класса компиляции | Нет | |
| classpathref | Ссылка на путь класса компиляции | Нет | |
| includeRuntime | Если outputявляется jar-файлом, то библиотека времени выполнения Kotlin будет включена в jar | Нет | true | 
| moduleName | Название компилируемого модуля | Нет | Имя цели (если указано) или проекта | 
Атрибуты kotlin2js
| Название | Описание | Необходимо | 
|---|---|---|
| output | Файл назначения | Да | 
| libraries | Пути к библиотекам Kotlin | Нет | 
| outputPrefix | Префикс для использования сгенерированных файлов JavaScript | Нет | 
| outputSuffix | Суффикс для использования сгенерированных файлов JavaScript | Нет | 
| sourcemap | Должен ли быть создан файл sourcemap | Нет | 
| metaInfo | Должен быть создан файл метаданных с бинарными дескрипторами | Нет | 
| main | Должен ли сгенерированный компилятором код вызвать основную функцию | Нет | 
Передача исходных аргументов компилятора
Для выборочной передачи исходных аргументов компилятора используются элементы <compilerarg> с атрибутами value или line.
Это может быть сделано в рамках элементов задач <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.