Gradle-”的英文缩写;申请自";ZIP依赖项

Gradle-”的英文缩写;申请自";ZIP依赖项,gradle,zip,build.gradle,dependency-management,static-analysis,Gradle,Zip,Build.gradle,Dependency Management,Static Analysis,在我的Gradle构建脚本中,我想导入一个包含静态分析配置(CheckStyle、PMD等)的ZIP依赖项,然后从该ZIP中的文件“应用”。当任何人运行“检查”任务时,应使用我的自定义静态分析配置 我已经尝试了下面这个有点复杂的解决方案,但我无法让它工作。文件被检索并解压缩到“config”目录中,但“apply from”不起作用-Gradle抱怨它找不到文件;我假设这是由于在构建配置阶段运行“apply from” 有没有更简单的方法 repositories { maven { u

在我的Gradle构建脚本中,我想导入一个包含静态分析配置(CheckStyle、PMD等)的ZIP依赖项,然后从该ZIP中的文件“应用”。当任何人运行“检查”任务时,应使用我的自定义静态分析配置

我已经尝试了下面这个有点复杂的解决方案,但我无法让它工作。文件被检索并解压缩到“config”目录中,但“apply from”不起作用-Gradle抱怨它找不到文件;我假设这是由于在构建配置阶段运行“apply from”

有没有更简单的方法

repositories {
    maven { url MY_MAVEN_REPO }
}

configurations {
    staticAnalysis {
        description = "Static analysis configuration"
    }
}

dependencies {
    staticAnalysis group:'my-group', name:'gradle-static-analysis-conf', version:'+', ext:'zip'
}

// Unzip static analysis conf files to "config" in root project dir.
// This is the Gradle default location.
task prepareStaticAnalysisConf(type: Copy) {
    def confDir = new File(rootProject.projectDir, "config")
    if (!confDir.exists()) {
        confDir.mkdirs()
    }
    from {
        configurations.staticAnalysis.collect { zipTree(it) }
    }
    into confDir
    apply from: 'config/quality.gradle'
}

check.dependsOn('prepareStaticAnalysisConf')

您完全正确:Gradle在评估阶段运行
apply
,但尚未执行
prepareStaticanalysconf
,并且未解压缩存档

只需编写一些顶级代码,而不是任务。它应该会起作用。此外,您最好使用buildscript级别的依赖项,以便在执行脚本之前解决它

这是完整的脚本

buildScript {
    repositories {
        maven { url MY_MAVEN_REPO }
    }
    dependencies {
        classpath group:'my-group', name:'gradle-static-analysis-conf', version:'+', ext:'zip'
    }
}

def zipFile = buildscript.configurations.classpath.singleFile
copy {
    from zipTree(it)
    into 'config'
}

apply from: 'config/quality.gradle'