kotlin - 如何将 -Xopt-in=kotlin.ExperimentalUnsignedTypes 应用于所有子项目?

标签 kotlin gradle kotlin-multiplatform kotlin-js

我有一个包含多个子项目的项目,这些子项目使用 kotlin-multiplatform 插件或 kotlin-js 插件,我想在所有这些中使用实验性的无符号类型。
到目前为止,我已经尝试过这个,但不起作用:

subprojects {
    tasks.withType<KotlinCompile>().all {
        kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.ExperimentalUnsignedTypes"
    }

    extensions.findByType<KotlinMultiplatformExtension>()?.sourceSets {
        all {
            languageSettings.useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes")
        }
    }
}
有没有办法添加 kotlin 编译器 arg -Xopt-in=kotlin.ExperimentalUnsignedTypes Gradle 中的所有子项目?

最佳答案

我已经通过反复试验达到了这一点,所以我不确定这是正确的方法。
我有一个包含一些多平台、JVM 和 JS 子项目的多项目构建,我想启用 kotlin.RequiresOptIn注解。所以我最终为各种 kotlin 编译任务设置了这个编译器参数:

subprojects {
    val compilerArgs = listOf("-Xopt-in=kotlin.RequiresOptIn")
    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions.jvmTarget = "1.8"
        kotlinOptions.freeCompilerArgs += compilerArgs
    }

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile> {
        kotlinOptions.freeCompilerArgs = compilerArgs
    }

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompileCommon> {
        kotlinOptions.freeCompilerArgs = compilerArgs
    }
}
我想同样的方法也适用于 ExperimentalUnsignedTypes .

关于kotlin - 如何将 -Xopt-in=kotlin.ExperimentalUnsignedTypes 应用于所有子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64184157/

相关文章:

java - 错误 : cannot find symbol import static org. hamcrest.CoreMatchers.containsString;

ios - Kotlin Multi-platform Mobile 代码与 iOS 平台上编译的 Swift 代码不同吗?

kotlin - 单元测试Kotlin的ConflatedBroadcastChannel行为

scala - @uncheckedVariance 在 Kotlin 中?

java - 从 Java Activity 类调用自定义 View 的 Kotlin 类中的动画

android - Kotlin-DataBinding-错误 : Check your module classpath for missing or conflicting dependencies

maven - gradle始终使用{user.home}/repository作为Maven本地缓存

android - 如何使用gradle ktx为Android robolectric测试设置-noverify选项?

kotlin - Kotlin Native cinterop def文件:如何消除绝对路径?

android - 无法解析外部依赖项 com.android.tools.build :gradle because no repositories are defined