是否可以使用Kotlin Liferay portlet?

由于我找不到任何这样的例子,我想知道是否有可能创建一个使用(纯)Kotlin而不是传统Java的Liferay Portlet。

Kotlin的目标是JVM – 技术上是这样的:是的。

有人能帮助你,分享他们的发现:可能不是。

常见的构建过程是否存在? 不是我所知道的。

如果你为Liferay 6.2或者7编写portlet,那么它可能会有所作为,除非你只是瞄准标准的JSR286 portlet。

这有点像Java门户中的PHP-portlet。 这是可以做到的,但一旦遇到第一个问题,就很难找到任何人来帮助你识别(或修复)问题。

只需稍微调整一下,就可以在Kotlin中编写portlet。

下载最新版本的kotlin库: https : //github.com/JetBrains/kotlin/releases/tag/v1.0.4

将lib文件夹的全部内容解压缩并复制到Liferay SDK lib文件夹中。 所以最后你应该有一些像/path-to-liferay-sdk/lib/kotlin-*.jar

在Liferay SDK目录中打开build-comon.xml文件并搜索javac标签(它在900行左右)。

在javac标记之前添加以下行:

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

并在javac标签中插入<withKotlin/>

 <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