我有一个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票证已打开,但它们已等待解决数月。
- https://youtrack.jetbrains.com/issue/KT-49774
- https://youtrack.jetbrains.com/issue/KT-50168
- https://youtrack.jetbrains.com/issue/KT-52647
然而,这个错误是令人难以置信的令人沮丧,所以我想有一个工作周围。
我已经试过了
- 禁用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
1条答案
按热度按时间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
时遇到“项目必须配置”错误。