Использование Ant
Получение задач Ant
Kotlin предоставляет три задачи для Ant:
- kotlinc: Компилятор Kotlin, нацеленный на JVM;
- kotlin2js: Компилятор Kotlin, нацеленный на JavaScript;
- withKotlin: Задача для компиляции файлов Kotlin при использовании стандартной задачи Ant javac.
Эти задачи определены в библиотеке kotlin-ant.jar, которая расположена в папке lib для Kotlin Compiler. Требуется версия 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, хотя можно использовать 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:
<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 с префиксом, постфиксом и параметрами sourcemap
<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
Параметр 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.
© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/reference/using-ant.html