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
.