如何在自定义插件中包含java编译任务?

时间:2013-12-19 05:24:39

标签: java gradle

我想创建一个带有java编译任务的自定义gradle插件。这是我的第一次拍摄:

class SpringDocPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        project.task(type: JavaCompile, "generateSpringDoc") {
            source = it.sourceSets.main.java
            classpath = it.sourceSets.main.output + configurations.compile

            options.compilerArgs = [
                    "-proc:only",
                    "-processor", "com.thilko.springdoc.SpringAnnotationProcessor"
            ]
            // specify output of generated code
            destinationDir = it.sourceSets.generated.java.srcDirs.iterator().next()
        }
    }
}

我有一个应用插件的测试项目。找到插件,但是我收到了这个错误:

What went wrong:
A problem occurred evaluating root project 'gradle-springdoc-plugin-test'.
> Could not find property 'sourceSets' on task ':generateSpringDoc'.

我不知道如何将特定任务添加到我的插件中,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

sourceSetsjava-base插件引入的概念/模型(非任务)。 sourceSets.main插件添加了java等源集实例(构建于java-base之上)。如果您的插件处理源集,请在其apply方法的开头添加以下内容:

project.plugins.apply("java") 
// or: project.plugins.apply(org.gradle.api.plugins.JavaPlugin)