Как заставить Gradle flatDir читать вложенные папки?

#java #gradle #groovy

Вопрос:

Я использую локальный flatDir репозиторий Gradle следующим образом:

 
repositories {
   flatDir {
       dirs 'D:/path/to/local/directory'
   }
}

 

но он ищет только файлы первого уровня. Мне интересно, есть ли возможность указать Gradle, чтобы найти зависимости по всему хранилищу, чтобы я мог организовать свои банки по группам и все равно заставить Gradle прочитать их все без указания групп.

Ответ №1:

Вы рассматривали возможность использования соглашений о каталогах Maven вместо flatDir этого ?

Например, храните банки, такие как

 myLocalRepo/com/foo/bar/1.0/bar-1.0.jar
myLocalRepo/com/foo/baz/2.0/baz-2.0.jar
 

Затем в build.gradle

 repositories {
   maven {
      uri file('myLocalRepo')
   }
} 
dependencies {
   compile 'com.foo:bar:1.0'
   compile 'com.foo:baz:2.0'
}
 

Комментарии:

1. Но что, если у меня слишком много банок для ручного создания этой иерархии папок? Знаете ли вы какой-нибудь быстрый способ добиться этого?

2. Откуда взялись ваши банки? Возможно, в каждой банке есть группа/артефакт/версия (GAV) в текстовом файле в банке. Например, под META-INF каталогом внутри банки. Если это так, то достаточно просто написать скрипт для перебора всех банок, чтения GAV из каждой и копирования их в макет каталога, подобный maven