Kotlin Liferay portlet 是否可行?
Is a Kotlin Liferay portlet possible?
因为我找不到任何示例,所以我想知道是否可以创建一个使用(纯)Kotlin 而不是传统的 Liferay Portlet Java。
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 将为您配置项目。它还会在新创建的 lib 文件夹中添加 3 个文件(kotlin-reflect.jar、kotlin-runtime.jar、kotlin-运行time-sources.jar)。但是,您需要将这些文件复制到 docroot/WEB-INF/lib 文件夹中才能使用。
我在这里发布了一篇关于它的博客:http://www.lims.io/blog/liferay-portlets-in-kotlin
因为我找不到任何示例,所以我想知道是否可以创建一个使用(纯)Kotlin 而不是传统的 Liferay Portlet Java。
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 将为您配置项目。它还会在新创建的 lib 文件夹中添加 3 个文件(kotlin-reflect.jar、kotlin-runtime.jar、kotlin-运行time-sources.jar)。但是,您需要将这些文件复制到 docroot/WEB-INF/lib 文件夹中才能使用。
我在这里发布了一篇关于它的博客:http://www.lims.io/blog/liferay-portlets-in-kotlin