Найти дубликаты JAR-файлов в пакете OSGi - PullRequest
1 голос
/ 08 апреля 2019

В настоящее время я работаю над проектом, результатом которого является толстый JAR-файл, работающий в контексте OSGi (Apache Felix).Есть ли способ / команда, чтобы проверить, доступны ли некоторые из jar-файлов, которые я встроил в мой толстый jar, из других пакетов и сервисов, чтобы я мог их удалить (и, таким образом, уменьшить размер jar-контейнера)?

Причина, по которой я собираю толстую банку, заключается в том, что я использую другую систему сборки для сборки своей баночки.(Я использую Scala и SBT, все остальное построено на Java и Gradle)

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Другой вариант: просто посмотрите, являются ли JAR, которые вы в настоящее время включаете в свой толстый JAR, пакетами OSGi (многие IDE сообщают об этом уже в некоторых представлениях зависимостей проекта) и запишите заголовок Bundle-SymbolicName.

Затем вы извлекаете ту же информацию из всех пакетов, установленных во время выполнения Felix, например, используя оболочку Gogo :

lb -s

... или если у вас есть каталог с пакетами длявремя выполнения и команда bnd (и вы работаете в Unix):

find <bundles-directory> -type f -iname "*.[jw]ar" -exec bnd --failok print --manifest {} \; 2>/dev/null | grep -F 'Bundle-SymbolicName'

Теперь вы можете сравнить эти списки с символьными именами, найденными в вашем толстом JAR.Найдя совпадение, вы также должны убедиться, что версия в порядке.

1 голос
/ 09 апреля 2019

Я не знаю ни одного автоматизированного инструмента, который бы делал это, но Apache Felix имеет два инструмента, которые могут помочь вам найти дубликаты:

  1. /system/console/depfinder
  2. /system/console/status-duplicate_exports

Особенно второй должен вам помочь. В нем перечислены пакеты, которые были экспортированы более одного раза, а затем перечислены пакеты, которые экспортируют эти пакеты. Если ваш пакет появляется в этом списке, вы знаете, что другой пакет экспортирует пакеты, которые находятся в вашем толстом пакете.

Но, как и в случае с depfinder, вам придется просмотреть список вручную или написать небольшой сценарий, чтобы помочь вам.

...