如何在自定义插件中创建sourceset

时间:2015-01-09 13:45:23

标签: gradle

我正在编写应该创建多个源集的自定义插件取决于插件扩展。 我怎么能用apply方法呢?

这是我的代码片段(两者都不起作用),标签 - 扩展名列表:

1

    project.sourceSets {
        labels.each { info ->
            "${info.lower}Src" {
                java.srcDirs = ['src'] + info.srcPostfix.collect { postfix -> "src_custom/${postfix}" }
            }
        }
        main { java.srcDirs = ['src'] + labels.collect { info -> "src_custom/${info.lower}" } }
        test { java.srcDirs = ['test'] + labels.collect { info -> "test_custom/${info.lower}" } }
    }

2

    labels.each { info ->
        SourceSet modelSrc = project.sourceSets.create("${info.lower}Src")
        modelSrc.getJava().setSrcDirs(['src'] + info.srcPostfix.collect { postfix -> "src_custom/${postfix}" })
    }
    SourceSetContainer sourceSets = project.convention.getPlugin(JavaPluginConvention).sourceSets
    SourceSet mainSourceSet = sourceSets.getByName(MAIN_SOURCE_SET_NAME)
    mainSourceSet.getJava().setSrcDirs(['src'] + labels.collect { info -> "src_custom/${info.lower}" })
    SourceSet testSourceSet = sourceSets.getByName(TEST_SOURCE_SET_NAME)
    testSourceSet.getJava().setSrcDirs(['test'] + labels.collect { info -> "test_custom/${info.lower}" })

2 个答案:

答案 0 :(得分:0)

我知道这已经过时了,但这就是我遇到的情况。我需要创建一个可以创建sourceSet的插件。以前我在build.gradle

中有这个
sourceSets {
    myNewSet {
        groovy.srcDir file("${project.myNewSet_src}")
        resources.srcDir file("${project.myNewSet_resources}")
    }
}

所以当我创建我的插件时,在apply方法中,我有了这个:

project.getSourceSets().create("myNewSet", {
    groovy.srcDir new File("${project.getProjectDir()}/${project.myNewSet_src}")
    resources.srcDir new File("${project.getProjectDir()}/${project.myNewSet_resources}")
});

希望这有助于某人。

答案 1 :(得分:0)

这里是一个示例,它在Kotlin Gradle DSL中看起来像什么,在多项目构建中在项目范围内配置Spring Boot的BootRun任务:

tasks {
    withType<BootRun> {
        val createGitRevisionReport: GitRevisionReportTask by this@tasks
        dependsOn(createGitRevisionReport)
        val sourceSets = project.convention.getPlugin(JavaPluginConvention::class.java).sourceSets
        val additionalSourceSet = sourceSets.create("bootRunAdditionalSourceSet") {
            resources.srcDir(createGitRevisionReport.gitRevisionReportDir)
        }
        sourceResources(additionalSourceSet)
    }
}