Возможно ли портлет Kotlin Liferay?

Поскольку я не мог найти никакого примера для этого, мне интересно, можно ли создать портлет Liferay, который использует (чистый) Kotlin вместо традиционной Java.

Котлин нацелен на JVM – так технически: Да.

Кто-нибудь сможет помочь вам в этом, поделиться своими выводами: Наверное, нет.

Существуют ли общие процессы сборки? Не то, чтобы я знал.

И это, вероятно, будет иметь значение, если вы напишете портлет для Liferay 6.2 или для 7 – если вы не нацелены на стандартный портлет JSR286.

Это немного похоже на PHP-портлеты на Java Portal. Это можно сделать, но как только вы столкнетесь с первой проблемой, вам будет сложно найти кого-нибудь, чтобы помочь вам определить (или исправить) проблему.

Можно написать портлеты в Котлине только с небольшим количеством настроек.

Загрузите последнюю версию библиотеки kotlin: https://github.com/JetBrains/kotlin/releases/tag/v1.0.4

Разархивируйте и скопируйте все содержимое папки lib в папку Liferay SDK lib. Поэтому в конце вы должны иметь что-то вроде /path-to-liferay-sdk/lib/kotlin-*.jar

Откройте файл build-comon.xml в каталоге SDK Liferay и найдите ярлык javac (это строка 900).

Добавьте следующую строку перед тегом javac:

<typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${sdk.dir}/lib/kotlin-ant.jar"/> 

а также вставить <withKotlin/> внутри тега javac:

 <typedef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${sdk.dir}/lib/kotlin-ant.jar"/> <javac classpathref="@{javac.classpathref}" compiler="${javac.compiler}" debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="@{javac.destdir}" encoding="${javac.encoding}" includeAntRuntime="false" nowarn="${javac.nowarn}" source="${javac.source}" srcdir="@{javac.srcdir}" target="${javac.target}"> <withKotlin/> </javac> 

Вот и все. Если вы запустите ant deploy ant, скомпилируйте файлы * .kt вместе с * .java для вас. Теперь, если вы используете Intellij IDEA, вы можете добавить файл Kotlin в свой проект. IDE сконфигурирует проект для вас. Он также добавит 3 файла (kotlin-reflect.jar, kotlin-runtime.jar, kotlin-runtime-sources.jar) во вновь созданную папку lib. Однако вам необходимо скопировать эти файлы в папку docroot / WEB-INF / lib, чтобы сделать ее доступной.

Я разместил здесь блог: http://www.lims.io/blog/liferay-portlets-in-kotlin

Intereting Posts
Что представляет собой запечатанный модификатор в Котлин? Android: Тип MenuPopup недоступен в этом контексте из-за: MenuPopup Вызов конструктора в kotlin с использованием vararg Невозможно выполнить добавление BigInteger Дженкинс град строит неудачу из-за приложения: compileDebugKotlin Spring Boot сериализует текст / javascript для JSON Имена тэгов Android TTS A и Z неправильны Добавление Kotlin к существующим Java-проектам нарушает ошибки в сообщениях об ошибках Android Studio Как вызвать функцию postgres с массивом составного типа OnErrorNotImplementedException с использованием RxJava2 и Retrofit2 Mosby MVI Не удалось найти ссылочный класс kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck Realm не генерирует классы RealmProxy в проекте Java / Kotlin при использовании kapt Требовать в суперклассе 'init block вызывает исключение IllegalArgumentException Ошибка при переходе с Java на Kotlin. Ошибка – org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задачи: app: compileDebugKotlin ' Внутренние записи (столбцы) в объекте помещения