kotlin - 为 Kotlin Multiplatform 项目设置 gradle 和项目结构

标签 kotlin gradle build.gradle kotlin-multiplatform kotlin-native

我想用 Kotlin Multiplatform 构建一个在 Linux、Macos 和 Windows 上运行的 CLI 工具。

但我正在努力设置我的build.gradle和我的项目结构。我正在使用 IntelliJ IDEA 2020.1并使用 File -> New -> Project -> Kotlin / Native | Gradle 创建了我的基本项目

目前我正在浏览 kotlinlang.org 的指南但我更跌倒然后取得了一些成就。

到目前为止我的build.gradle如下所示:

plugins {
   id 'org.jetbrains.kotlin.multiplatform' version '1.3.72'
}
repositories {
    mavenCentral()
}
kotlin {
// For ARM, should be changed to iosArm32 or iosArm64
// For Linux, should be changed to e.g. linuxX64
// For MacOS, should be changed to e.g. macosX64
// For Windows, should be changed to e.g. mingwX64

     linuxX64("linux") {

     }
     mingwX64("mingw") {

     }
     macosX64("macos") {
         binaries {
             executable {
            // Change to specify fully qualified name of your application's entry point:
                entryPoint = 'sample.main'
            // Specify command-line arguments, if necessary:
            runTask?.args('')
        }
    }
}

sourceSets {
    commonMain {
        kotlin.srcDir('src/main')
        resources.srcDir('src/res')
        dependencies {
            implementation kotlin('stdlib-common')
            implementation "com.github.ajalt:clikt-multiplatform:2.7.0"
        }
    }
    commonTest {
        dependencies {
            implementation kotlin('test-common')
            implementation kotlin('test-annotations-common')
        }
    }

    macosX64().compilations.test.defaultSourceSet {
        dependsOn commonMain
    }
    // Note: To enable common source sets please comment out           
    'kotlin.import.noCommonSourceSets' property
    // in gradle.properties file and re-import your project in IDE.
    macosMain {
    }
    macosTest {
    }
}
}

 wrapper {
    gradleVersion = "6.4.1"
    distributionType = "ALL"
} 

而且我的项目结构还是基本的:

Project structure

以前我只使用 Kotlin 处理 Android 项目,我想我被 gradle 宠坏了,因为 Android 生成了最基本的东西,而且一切都在工作而没有做那么多。

我知道我需要创建像 linuxMain 这样的包和 mingwMain ,但是我在哪里放置常见的源代码集?我试图创建一个名为 commonMain 的包,但它甚至不允许我在该包中创建 Kotlin 文件。

完成后,我希望(在最好的情况下)拥有一个公共(public)源集和一个用于所有目标的入口点。这甚至可能吗?

最佳答案

据我所知,您将 commonMain 源集的源位置指定为 /src/main/ .默认情况下,它通常设置为 /src/commonMain/kotlin/ .因此,如果您将删除那些 srcDir设置并在您的 /src/commonMain/kotlin/ 中创建一个 .kt 文件文件夹,一切都应该正常。另外,我希望你已经从你的 gradle.properties 中删除了 'kotlin.import.noCommonSourceSets' 属性。正如您的脚本推荐的那样。

关于kotlin - 为 Kotlin Multiplatform 项目设置 gradle 和项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62067258/

相关文章:

android - 如何在 Android Studio [Kotlin] 中运行一个类中另一个类的函数?

java - hibernate 中的关系 1-1 不起作用 : unknown column account0_. date_of_birth

android - 将我的应用程序连接到 Firebase 时出现问题

android - 无法将altbeacon库包含到新项目中

gradle - 在使用Gradle 5.4的multibuild项目中,java 8的sourceSompatiblity无效

kotlin - 抛弃Kotlin箭头中的嵌套选项

gradle - 使用mysql-connector时buildscript中的ClassNotFoundException

Gradle 找不到 org.igniterealtime.smack :smackx:3. 4.1

Android Gradle - 检查正在执行哪个任务

android - 使用-sdk :minSdkVersion 16 cannot be smaller than version 23 declared in library