以编程方式为Jar任务添加依赖项

时间:2016-01-04 07:56:40

标签: gradle gradle-plugin

我正在创建一个必须编译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;错误(导致编译失败)。

1 个答案:

答案 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;

相关问题