0

В моем Gradle построить сценарий, я хочу, чтобы импортировать ZIP зависимость, которая содержит статическую конфигурацию анализа (Checkstyle, PMD и т.д.), а затем «применить из» файлы в этом ZIP. Когда кто-то запускает задачу «проверить», тогда следует использовать мою конфигурацию статического анализа.Gradle - «применить из» 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') 

ответ

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' 

 Смежные вопросы

  • Нет связанных вопросов^_^