Gradle build - Разрешить зависимости из загруженного архива - PullRequest
0 голосов
/ 05 ноября 2018

Я довольно новичок в Gradle. У меня есть многопроектная сборка, которая использует некоторые зависимости, которые в настоящее время упакованы в проекте (с использованием репозиториев и flatDir), так как они недоступны в артефакте. Я хочу удалить эту локальную папку и загрузить несколько архивов, содержащих эти зависимости, распаковать их и продолжить сборку как обычно. Я буду использовать https://plugins.gradle.org/plugin/de.undercouch.download для загрузки, но я не знаю, как это сделать до какого-либо разрешения зависимостей (и в идеале, загрузки, если это еще не сделано). На данный момент сборка завершается неудачей на этапе настройки, насколько я могу судить:

  `A problem occurred configuring project ':sub-project-A'.
  > Could not resolve all files for configuration ':sub-project-A:compileCopy'.
    Could not find :<some-dependency>:.

РЕДАКТИРОВАТЬ: Загрузка файлов работает. Все еще борется с распаковкой архивов:

task unzipBirt(dependsOn: downloadPackages, type: Copy) {
    println 'Unpacking archiveA.zip'
    from zipTree("${projectDir}/lib/archiveA.zip")     
    include "ReportEngine/lib"
    into "${projectDir}/new_libs"
}

Как мне выполнить этот запуск на этапе настройки?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

В итоге я использовал копирование для распаковки в фазе конфигурации

copy {
     ..
     from zipTree(zipFile)
     into outputDir
     ..  
   }
0 голосов
/ 05 ноября 2018

См. Project.files (Объект ...) , в котором указано

В этот метод можно передать любой из следующих типов:

...

Задача. Преобразован в выходные файлы задачи. Задача выполняется, если набор файлов используется в качестве входных данных для другой задачи.

Так что вы можете сделать:

task download(type: Download) {
    ... 
    into "$buildDir/download" // I'm guessing the config here
}
task unzip {
    dependsOn download
    inputs.dir "$buildDir/download"
    outputs.dir "$buildDir/unzip"
    doLast {
        // use project.copy here instead of Copy task to delay the zipTree(...)
        copy {
            from zipTree("$buildDir/download/archive.zip")
            into "$buildDir/unzip"
        }
    }
}
task dependency1 {
    dependsOn unzip
    outputs.file "$buildDir/unzip/dependency1.jar" 
}
task dependency2 {
    dependsOn unzip
    outputs.file "$buildDir/unzip/dependency2.jar" 
}
dependencies {
    compile files(dependency1)
    testCompile files(dependency2) 
}

Примечание: если в молнии много банок, вы можете сделать

['dependency1', 'dependency2', ..., 'dependencyN'].each {
    tasks.create(it) {
        dependsOn unzip
        outputs.file "$buildDir/unzip/${it}.jar" 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...