#gradle
#gradle
Вопрос:
У меня есть скрипт сборки Gradle со смешанными зависимостями Maven (я использую Maven Central для разрешения зависимостей) и локальный каталог. Фрагмент выглядит следующим образом:
repositories {
mavenCentral()
flatDir name: 'directoryRepository', dirs: 'tools/libs'
}
Затем мне нужно объявить мои локальные зависимости таким образом:
dependencies {
compile ":commons-cli:1.0@jar"
}
Я не могу использовать обозначения files (‘…’) (потому что другие части скрипта завершились бы ошибкой с исключением приведения класса из Array в HashMap, и я не могу изменить эту часть).
Файлы jar правильно добавлены в путь сборки. Проблема в том, что Gradle хочет извлекать для каждого jar в ‘tools / libs’ другой ‘-source’ jar. Действительно, если у меня есть в папке tools / libs:
commons-cli-1.0.jar
commons-cli-1.0-sources.jar
все работает нормально. Если я удаляю исходный jar, он выдает ошибку «невозможно разрешить зависимость», извлекая -source jar.
У меня есть более 50 файлов, которыми можно управлять таким образом, и, конечно, у меня нет исходных файлов jar (и мне не интересно их иметь).
Как я могу исключить выборку исходного jar?
Заранее большое спасибо за любые подсказки.
Fabio Da Soghe
Ответ №1:
Если вы используете IDEA, есть настройка для всего модуля ideaModule.downloadSources = false
, которая может помочь, но она отключит всю загрузку исходного кода для IDEA.
Не уверен, что вы имели в виду под files(...)
обозначением, но как насчет того, чтобы попробовать это?:
dependencies{
...
compile fileTree( dir: "toos/lib", include: '*.jar' )
... or ...
compile fileTree( dir: "toos/lib", includes: ['*.jar'] )
}
Редактировать:
Похоже, существует связанный с ним отчет об ошибке, исправленный в milestone 5. Попытка показала, что ошибка все еще существует, но теперь это просто предупреждение, и сборка завершится успешно. По-видимому, предупреждение исходит от Ivy, поэтому его нелегко исправить : (
Комментарии:
1. Под files (…) я имел в виду то, что вы написали: я не могу использовать files (…) или FileTree (…), потому что это создает массив, который вызывает ClassCastException в последующем коде. И я не могу это изменить. В любом случае, я использую Eclipse. Ваш намек предлагает мне выполнить поиск в плагине Eclpse, хотя для меня это звучит странно: почему Gradle должен беспокоиться о IDE, которую я использую? Концепция загрузки исходного кода должна быть независимой от конкретной используемой IDE, не так ли?
2. Найден эквивалент для плагина Eclipse:
eclipseClasspath.downloadSources = false
Принимаю ваш ответ за то, что он указал мне правильное направление (я искал настройки уровня зависимости, которые, похоже, не существуют).3. Вы правы насчет загрузки исходного кода. Я думаю, я более глубоко изучу это, должно быть лучшее решение.
4. Это было бы здорово : o) Я действительно много искал и нашел что угодно, но я должен сказать, что я немного туповат с Groovy…