Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle 如何在自定义插件中创建sourceset_Gradle - Fatal编程技术网

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

Gradle 如何在自定义插件中创建sourceset,gradle,Gradle,我正在编写自定义插件,它应该根据插件扩展创建源集的数量。 我怎样才能在应用方法中做到这一点 以下是我的代码片段(两者都不起作用)、标签-来自扩展名的列表: 一, 二, 我知道这很旧,但这是我遇到的。我需要创建一个插件来创建一个源集。我以前在我的build.gradle sourceSets { myNewSet { groovy.srcDir file("${project.myNewSet_src}") resources.srcDir file("${

我正在编写自定义插件,它应该根据插件扩展创建源集的数量。 我怎样才能在应用方法中做到这一点

以下是我的代码片段(两者都不起作用)、标签-来自扩展名的列表:

一,

二,


我知道这很旧,但这是我遇到的。我需要创建一个插件来创建一个源集。我以前在我的
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}")
});

希望这对其他人有所帮助。

下面是一个例子,它在Kotlin Gradle DSL中是什么样子的,在多项目构建中配置Spring Boot的BootRun任务项目范围:

任务{
withType{
val createGitRevisionReport:GitRevisionReportTaskBythis@tasks
dependsOn(createGitRevisionReport)
val sourceset=project.convention.getPlugin(JavaPluginConvention::class.java).sourceset
val additionalSourceSet=sourceset.create(“bootRunAdditionalSourceSet”){
resources.srcDir(createGitRevisionReport.gitRevisionReportDir)
}
sourceResources(additionalSourceSet)
}
}

不工作?这到底是什么意思?@Opal谢谢你的评论。若我尝试在应用插件的项目上运行“./gradlew build”,它将找不到“${label.lower}srccomile”任务。在最新的IntellijIdea中,“src_custom/${label.lower}”文件夹未标记为源文件夹。将不会创建您正在编写的任务。添加的源代码将使用标准任务进行编译。你能提供SSCCE吗?这是一个很好的例子,说明了您想要实现什么?@Opal In build.gradle在我的java项目中,我可以“apply plugin:java”,然后使用第一个变体:“sourceset{…}”。在本例中,我为每个标签(标签-字符串列表)提供了正确的“${label}Src”源集和“#{label}srccomile”任务。现在,我想将此代码移动到自定义插件,并在项目的build.gradle中仅使用“apply plugin:my custom plugin”
sourceSets {
    myNewSet {
        groovy.srcDir file("${project.myNewSet_src}")
        resources.srcDir file("${project.myNewSet_resources}")
    }
}
project.getSourceSets().create("myNewSet", {
    groovy.srcDir new File("${project.getProjectDir()}/${project.myNewSet_src}")
    resources.srcDir new File("${project.getProjectDir()}/${project.myNewSet_resources}")
});