我有一个Gradle插件,添加了一个scratch
源集。我希望在src/main/java/
中定义的类在src/scratch/java
中可用。我已经知道如何在构建文件中做到这一点,但我想让我的插件这样做:
dependencies {
scratchImplementation sourceSets.main.output
//...
}
我的插件如何使用Gradle API做到这一点?
我把Jeff的例子拼凑在一起:project.dependencies.add(project.getConvention().getPlugin(JavaPluginConvention).sourceSets.getByName("main").output);
但是除了在Gradle 7.2中被弃用之外,Gradle似乎不喜欢add
调用:
找不到add()方法用于对象的参数[main classes]类型org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler
Tim的建议使用扩展而不是约定避免了弃用。最初,当我尝试它时,我得到了一个错误,但现在似乎已经清除了。
在此期间,我发现同样有效的是:
project.dependencies {
// add dependency on main java code from scratch java code
scratchImplementation project.extensions.getByType(JavaPluginExtension).sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).output
}
(虽然我不完全确定为什么)