Проблема с gradle и внешней банкой - баночка не найдена - PullRequest
0 голосов
/ 13 мая 2019

У меня проблема с Gradle.Я хочу использовать предоставленный извне Jar: itext-2.1.7.js6.jar, это исправленная версия, используемая JasperReports.

В структуре проекта у меня есть каталог /libs, содержащий 2 файла: fonts.jar и itext-2.1.7.js6.jar

Часть моего файла gradle.build выглядит следующим образом:

compile fileTree(dir: 'libs', include: ['*.jar'])
implementation group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.7.1'
implementation group: 'net.sf.jasperreports', name: 'jasperreports-functions', version: '6.8.0'
implementation group: 'joda-time', name: 'joda-time', version: '2.9.9'
//implementation group: 'hu.blackbelt.bundles.itext', name: 'com.lowagie.itext', version: '2.1.7-1'

Последняя зависимость закомментирована, потому что я хочу использовать внешний JAR вместо исходного iText.

Когда я пытаюсь запустить свое приложение, я получаю:

BUILD FAILED in 0s
1 actionable task: 1 executed
Could not find com.lowagie:itext:2.1.7.js6.
Required by:
    project : > net.sf.jasperreports:jasperreports:6.7.1

Что я делаю не так?С моим fonts.jar все в порядке, так что я думаю, что должно быть то же самое с iText, но это не так ...

1 Ответ

0 голосов
/ 20 мая 2019

Как видно из файла pom jasperreports, существует явная зависимость от com.lowagie:itext:2.1.7.js6, которая также может быть найдена в специфичном репозитории Jasper Reports

Причина, по которой это работает прозрачно в Maven, заключается в том, что Maven будет использовать репозитории, определенные в файле pom, в то время как Gradle не будет их использовать, поскольку они могут быть источником незащищенности.

У вас есть два варианта:

  1. Добавьте этот репозиторий, потенциально используя фильтрацию репозитория , чтобы обслуживать только эти артефакты оттуда, а затем удалите файл из libs
  2. Добавьте исключение в jasperreports, чтобы он больше не пытался получить эту зависимость. И вместо этого код времени выполнения будет использовать версию, найденную в libs. Вы просто забываете о транзитивном управлении зависимостями в этом случае, например, при обновлении jasperreports и получении (или нет) обновленной версии из их объявления зависимостей.
...