首页 文章

Gradle - “从”应用“ZIP依赖”

提问于
浏览
0

在我的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')

1 回答

  • 0

    你是完全正确的:Gradle在评估阶段运行 apply ,但 prepareStaticAnalysisConf 尚未执行且存档未解包 .

    而不是任务,只需编写一些顶级代码 . 它应该做的伎俩 . 此外,您最好使用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'
    

相关问题