将kotlin代码编译为JVM和JavaScript

时间:2015-06-05 16:33:34

标签: javascript compilation jvm kotlin

我非常喜欢一次编码框架的想法,然后能够将其编译为jvm字节代码以及javascript以供web使用。

kotlin编译器目前是否可以使用?

3 个答案:

答案 0 :(得分:7)

有可能但你可能会面临一些困难。首先,您只能使用Maven构建和配置它:只需设置两个执行。第二个问题是IDE无法处理多个目标,因此您可以使用技巧来启用/禁用stdlib / kotlin-js-library

您可以在https://github.com/Kotlin/kotlinx.html

看到它

它是多模块项目..模块jvm只为JVM编译,模块js只为javascript编译,模块共享到两者

注意maven配置文件:编辑共享模块时,您可以启用js或jvm,但不能同时启用两者:否则IDE会发疯。在编译期间,默认情况下两个配置文件都处于活动状态,因此您将获得多目标jar

答案 1 :(得分:0)

这段时间会导致问题。然而这个想法非常好,所以人们不断询问。

检查我的项目https://github.com/C06A/KUrlet我做了这样的事情:在根级模块中包含共享代码,并将其源目录包含在每个子模块的sourceSets属性中(一个目标是JVM,另一个是JS)。

答案 2 :(得分:0)

我创建了一个针对kotlin maven的projet JVM,可以将其编译为JVM和JS。

  1. 打开Intellij IDEA->文件->新建->项目-> Maven->选中“从原型创建”->选择“ org.jetbrains.kotlin:kotlin-archetype-jvm”

    < / li>
  2. 编辑GroupId:com.example.training; ArtifactId:kotlin2js;版本:1.0-SNAPSHOT

  

注意:项目(模块)的名称不应包含“-”(破折号),而“ _”(下划线)则可以。

  1. 在路径src / main / kotlin / com.example.training /

    中创建名为Person的类kotlin
    data class Person (
        val id, Int,
        val firstname: String)
    
  2. 编辑pom.xml

    a)添加依赖项“ kotlin-stdlib.js”

     <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-js</artifactId>
            <version>${kotlin.version}</version>
     </dependency>
    

    b)在插件“ kotlin-maven-plugin”中添加目标“ js” enter image description here

    c)(对于Kotlin / JS互操作性是可选的)添加插件以解压缩lib“ kotlin-stdlib-js”中所需的js文件。

          <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.jetbrains.kotlin</groupId>
                                <artifactId>kotlin-stdlib-js</artifactId>
                                <version>${kotlin.version}</version>
                                                  <outputDirectory>${project.build.directory}/js/lib</outputDirectory>
                            <includes>*.js</includes>
                            </artifactItem>
                        </artifactItems>
                        </configuration>
                    </execution>
                </executions>
        </plugin>
    
    1. 运行mvn clean编译

    2. 文件夹类包含Java的Person.class。 JS文件夹包含JS的kotlin2js.js和kotlin2js.meta.js,所有解压缩的js文件都位于子文件夹lib中。

enter image description here