Java 在Gradle中创建多个源集

Java 在Gradle中创建多个源集,java,gradle,pmd,Java,Gradle,Pmd,我有一个项目,其中有不同的压缩档案文件夹。我想提取它们,并对每个进行一些检查。但我们希望报告被分开。例如pmd检查。 因此,要从每个zip文件中分离文件,必须在不同的资源集中和调用时进行 gradle check 为每个目录生成带有检查的报告 输入文件: sources1.zip、sources2.zip、sources3.zip、sources4.zip 每个zip都包含单独的项目。 例如: src/main/java/sources1/Example.java src/main/java/

我有一个项目,其中有不同的压缩档案文件夹。我想提取它们,并对每个进行一些检查。但我们希望报告被分开。例如pmd检查。 因此,要从每个zip文件中分离文件,必须在不同的资源集中和调用时进行

gradle check
为每个目录生成带有检查的报告

输入文件: sources1.zip、sources2.zip、sources3.zip、sources4.zip 每个zip都包含单独的项目。 例如:

src/main/java/sources1/Example.java
src/main/java/sources2/App.java
。。。。 何时运行要生成的检查

build/reports/pmd/sources1SourceSet.html
build/reports/pmd/sources2SourceSet.html
build/reports/pmd/sources3SourceSet.html
build/reports/pmd/sources4SourceSet.html
因此,我想根据ZIP的名称声明不同的源集,而不是手动执行,但不知道如何执行

sourceSets {
    sourcest1{
        java {
            srcDirs  file("...")
        }
    }
}

有没有另一种简单的方法可以在不为每个zip创建新的源集的情况下进行单独检查?

一种方法可以开始为每个zip创建专用任务。这可以在循环中完成:

["source1", "source2", "source3"].each{ sourceName ->
    tasks.create("pmd${sourceName}", Pmd){
        reports.html.reportsDir = "$buildDir/reports/pmd${sourceName}"

        source = zipTree("file/to/$sourceName.zip")
        ...
    }
}

干杯

太棒了。但是reports.html.reportsDir=“$buildDir…”使Gradle抛出弃用警告弃用的动态属性:“reportsDir”在“Report html”上,值:“…”弃用的动态属性“reportsDir”在多个位置创建。对不起,我的错误,请使用“reports.html.destination=文件($buildDir/reports/pmd${sourceName}”)相反,要删除弃用消息