Kotlin多平台多项目Gradle错误:“项目必须配置”

cqoc49vn  于 2022-11-14  发布在  Kotlin
关注(0)|答案(1)|浏览(206)

我有一个Kotlin多平台项目(1.7.10),其中包含多个子项目,使用Gradle 7.4.2。在运行Gradle任务时,我经常会收到来自Kotlin Gradle插件的错误消息:

* What went wrong:
Execution failed for task ':modules:web-map:publicPackageJson'.
> Error while evaluating property 'externalDependencies$kotlin_gradle_plugin' of task ':modules:web-map:publicPackageJson'
   > Projects must be configuring

这个错误不会消失,除非我以某种方式强制项目“刷新”。因此,我可以临时解决这个问题,方法是对根build.gradle.kts进行附带编辑,例如更改

// $projectRoot/build.gradle.kts

println("annoying bug")

进入

// $projectRoot/build.gradle.kts

//println("annoying bug")

这个小的改变会强制Kotlin插件“刷新”,然后我可以再次运行Gradle任务....直到下一次。错误很快就会再次出现。
有几个bug票证已打开,但它们已等待解决数月。

然而,这个错误是令人难以置信的令人沮丧,所以我想有一个工作周围。
我已经试过了

  • 禁用Gradle缓存
  • 禁用Gradle并行化
  • 强制KotlinGradle任务始终运行,方法是向所有任务添加“缓存破坏”Gradle任务输入
  • 创建一个Gradle任务,该任务将在所有任务之前自动编辑build.gradle.kts,以自动强制刷新。

不幸的是,没有任何东西能持续工作。
此处提供了一个示例项目:https://youtrack.jetbrains.com/issue/KT-52647/KJS-Gradle-Make-Projects-must-be-configuring-a-warning#focus=Comments-27-6195302.0-0

91zkwejq

91zkwejq1#

我已经创建了一个hack优雅的临时变通方案。
我创建了一个Gradle任务projectsMustBeConfiguringBuster,它将对Gradle脚本进行附带编辑,并将该任务注册为 * 所有 * 其他任务的终结器任务。这以某种方式重置了Kotlin插件,使其认为项目正在“配置”。
为了保持整洁,我创建了一个新的Gradle脚本kt52647.gradle.kts,并将其应用到根目录build.gradle.kts中。如果您愿意,您可以将此文件添加到.gitignore中,或者提交它,但随后会提交tell Git to ignore any future changes
第一个
我现在可以重复运行./gradlew assemble,并且不会出现错误。
如果我注解掉finalizedBy(...),我会在第二次运行assemble时遇到“项目必须配置”错误。

相关问题