Я работаю над внедрением системы сборки Gradle для части программного обеспечения, которая имеет части, которые разработаны в области без подключения к Интернету, или возможность установки сервера Maven/Ivy (например, Nexus). Чтобы поддерживать разработку в этих средах, я собираю плагин Gradle, который позволяет генерировать "автономную рабочую область".
Первоначально я реализовал эту функциональность, вызывая разрешение каждой конфигурации в проекте (запуск загрузки всех зависимостей), а затем обход всего дерева зависимостей каждой конфигурации и копирование локальной кэшированной копии зависимостей в автономную рабочую область. (Задача копирования была сгенерирована для каждой операции копирования.) Затем эти JAR будут ссылаться с использованием репозитория flatDir.
Эта реализация выполнила свою работу, используя блок afterEvaluate. Хотя это работало нормально в Gradle 2.0, оно вызывает предупреждение об устаревании в Gradle 2.2.1, потому что запуск разрешения каким-то образом рассматривается как изменение конфигурации после того, как оно уже разрешено (Attempting to change configuration ':core:runtime' after it has been included in dependency resolution. This behaviour has been deprecated and is scheduled to be removed in Gradle 3.0
). В целом, этот подход кажется довольно хакерским, так как он также требует от меня изменить файлы build.gradle, чтобы явно перечислять все транзитивные зависимости, поскольку нет доступных POM файлов для правильного указания зависимостей.
Более элегантный подход кажется, что он построит локальный репозиторий Maven всех зависимостей (включая файлы POM, исходные JAR, javadoc JAR и т.д.), а затем просто используйте тип хранилища mavenLocal(). К сожалению, я не уверен, как это сделать правильно, где мне не нужно вызывать разрешение артефакта, чтобы выполнить эту операцию.
Есть ли какой-то лучший способ, которым я могу добиться полной загрузки артефактов в простой путь к пакету, чем просто перевернуть весь мой каталог USER_HOME/.gradle?