在我的Gradle构建脚本中,我想导入一个包含静态分析配置(CheckStyle,PMD等)的ZIP依赖项,然后"从"该ZIP中的文件。当任何人运行"检查"任务,我应该使用我的自定义静态分析配置。
我已尝试过下面有些复杂的解决方案,但我无法让它发挥作用。检索文件并将其解压缩到" config"目录,但"申请来自"不起作用 - 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')
答案 0 :(得分: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'