【问题标题】:Gradle - "apply from" a ZIP dependencyGradle - “应用自” ZIP 依赖​​项
【发布时间】:2015-09-29 11:58:46
【问题描述】:

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

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

有没有更简单的方法来做到这一点?

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 zip build.gradle dependency-management static-analysis


    【解决方案1】:

    您完全正确: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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多