Gradle - 向类路径添加新配置会引发错误
Gradle - Adding new configuration to classpath throws error
我创建了一个自定义 Gradle 插件,它为一些我想单独处理的依赖项创建了一个新配置。由于这些曾经在 compile
配置中,我已经将新配置添加到类路径(来自 Java 插件),如下所示:
project.sourceSets.all { sourceSet ->
sourceSet.compileClasspath += myConfiguration
}
我的配置 扩展了 compile
配置。我的理由是,如果有任何其他第 3 方插件对 compile
配置执行 "something" 那么它也会影响我的新配置,因为它也是 compile
的一个实例.
似乎稍后在另一个插件 Spring PropDeps Plugin 上也修改了类路径并且构建失败:
Failed to apply plugin [class 'org.springframework.build.gradle.propdep.PropDepsPlugin']
Cannot change dependencies of configuration ':my-project:compile' after it has been resolved.
查看该插件的源代码,他们正在执行与我在自定义插件中创建配置相同的步骤,即创建配置并将其在应用插件后立即添加到类路径中,请参阅here.
如果只有 一个 插件可以向类路径添加新配置,那似乎很疯狂。我在这里做错了什么?
请注意,我的自定义插件应用于 allprojects
块,而 Spring 插件应用于 subprojects
块 - 不确定这是否重要。
Hmmm ... 在我写这个问题时,关于扩展 compile
配置 和 添加到编译类路径的事情让我印象深刻。这似乎是我在添加循环依赖。瞧,当我没有扩展配置时,构建工作正常!
我创建了一个自定义 Gradle 插件,它为一些我想单独处理的依赖项创建了一个新配置。由于这些曾经在 compile
配置中,我已经将新配置添加到类路径(来自 Java 插件),如下所示:
project.sourceSets.all { sourceSet ->
sourceSet.compileClasspath += myConfiguration
}
我的配置 扩展了 compile
配置。我的理由是,如果有任何其他第 3 方插件对 compile
配置执行 "something" 那么它也会影响我的新配置,因为它也是 compile
的一个实例.
似乎稍后在另一个插件 Spring PropDeps Plugin 上也修改了类路径并且构建失败:
Failed to apply plugin [class 'org.springframework.build.gradle.propdep.PropDepsPlugin'] Cannot change dependencies of configuration ':my-project:compile' after it has been resolved.
查看该插件的源代码,他们正在执行与我在自定义插件中创建配置相同的步骤,即创建配置并将其在应用插件后立即添加到类路径中,请参阅here.
如果只有 一个 插件可以向类路径添加新配置,那似乎很疯狂。我在这里做错了什么?
请注意,我的自定义插件应用于 allprojects
块,而 Spring 插件应用于 subprojects
块 - 不确定这是否重要。
Hmmm ... 在我写这个问题时,关于扩展 compile
配置 和 添加到编译类路径的事情让我印象深刻。这似乎是我在添加循环依赖。瞧,当我没有扩展配置时,构建工作正常!