Kotlin Liferay portlet 可能吗?

问题描述 投票:0回答:3

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

java liferay portlet kotlin
3个回答
5
投票

只需稍加调整就可以用 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


2
投票

Kotlin 的目标是 JVM - 所以从技术上来说:是的。

是否有人能够帮助您这样做,请分享他们的发现:可能不会。

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

如果您为 Liferay 6.2 或 7 编写 portlet,可能会有所不同 - 除非您的目标只是标准 JSR286 portlet。

这有点像 Java Portal 中的 PHP-portlet。这是可以做到的,但是一旦遇到第一个问题,您将很难找到任何人来帮助您识别(或解决)问题。


0
投票

10 年后,这是可能的,并且 kotlin 是 liferay 中的一流语言。

https://help.liferay.com/hc/en-us/articles/360029005872-Kotlin-Portlet

© www.soinside.com 2019 - 2024. All rights reserved.