我正在创建一个必须编译SwaggerCodegen lib(Java源代码树)输出的Gradle插件。在我的插件的apply()函数中,我定义了一个swaggerClient源集和配置:
project.sourceSets {
swaggerClient {
java {
srcDirs new File(javaGenTask.outputDirectory, 'src/main/java').absolutePath
}
}
}
project.configurations {
swaggerClient
}
然后,我解析生成的build.gradle文件的依赖关系,得到一个字符串列表(带有配置)并将它们添加到配置中:
//t instanceof List<String>, with entries in dependency markup such as:
//io.github.robwin:swagger2markup:0.9.1
project.configurations.getByName('swaggerClient') { Configuration conf ->
conf.dependencies.addAll t.collect {String s -> project.dependencies.create s}
}
在此之后我定义了一个Jar类型的任务:
project.task('Koos',
description: 'Generate a java jar using Swagger markup',
type: Jar,
dependsOn: javaGenTask) {
from project.sourceSets.asMap['swaggerClient'].output
}
javaGenTask是生成Java源代码的任务。
运行任务时,没有任何声明的依赖项,导致编译器&#39;包&lt;&gt;不存在&#39;错误(导致编译失败)。
答案 0 :(得分:0)
回答自己。配置名称+&#39;编译&#39;需要改变
project.configurations.getByName('swaggerClientCompile') { Configuration conf ->
conf.dependencies.addAll t.collect {String s -> project.dependencies.create s}
}
注意&#39; swaggerClient&#39;与&#39; swaggerClientCompile&#39;