不同的方式来应用插件? (Gradle Kotlin DSL)

试图将这个项目的构建迁移到GSK。 我们在Groovy有这个:

allprojects { apply plugin: 'java' ... sourceSets { ... } sourceCompatibility = ... } 

因此,在搞清楚如何访问Kotlin的插件约定时,我发现:

 allprojects { plugins { java apply true } ... println("Project $name, plugins: ${plugins}") // empty list val java = the() // throws exception } 

但如果你这样做:

 allprojects { apply { plugin(JavaPlugin::class.java) } } 

插件被应用并且惯例变得可访问

WTH?