Проблема со связыванием внешних зависимостей в комплекте Liferay Dxp
Привет за добавление сторонних библиотек, я следил за статьей https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module. Теперь сгенерированный пакет имеет каталог lib со всеми зависимостями, которые настроены в build.gradle. При развертывании пакета устанавливается состояние пакета. Когда я пытаюсь запустить пакет, я получаю сообщение об ошибке ниже
org.osgi.framework.BundleException: Could not resolve module: com.test..api [564]
Unresolved requirement: Import-Package: com.ibm.wsdl.extensions.soap
Это даже не транзитивная зависимость для любого из моих jar-файлов зависимостей, которые я настроил в build.gradle. Не могли бы вы помочь мне решить эту проблему.
2 ответа
Теперь я могу начать свой пакет.
Когда мы настраиваем зависимости в файле build.gradle и выполняем обновление gradle, gradle загружает все зависимости (включая транзитивные зависимости). Проблема с этими переходными зависимостями. Gradle не загружает все переходные зависимости. В нем отсутствует несколько jar-файлов. Мы должны снова настроить отсутствующие jar-файлы в build.gradle и выполнить обновление gradle.
Обойдите все, чтобы найти недостающие банки:
Настройте зависимости в build.gradle, выполните обновление gradle и развертывание. Перейдите к оболочке gogo и проверьте комплектацию. Теперь пакет будет развернут и будет в установленном состоянии. попробуйте запустить связку из оболочки gogo. Теперь вы получите ошибку, аналогичную Unresolved requirement:Import-Package: com.poi.extractor
Google пакет и попробуйте найти соответствующий файл в хранилище Maven. Сконфигурируйте новый jar в build.gradle. Продолжайте этот процесс, пока пакет не активируется.
Добавьте скрипт ниже в свой build.grade, чтобы включить все сторонние зависимости в ваш модуль OSGi вместо того, чтобы добавлять их вручную один за другим.
bundle {
def runtime = project.configurations.runtime
runtime.resolve()
instruction 'Bundle-ClassPath', '.'
instruction 'Bundle-Activator', 'com.XXX.XXXXX.XXXX.ClassName'
runtime.resolvedConfiguration.resolvedArtifacts.each {
def resrc = it.moduleVersion.id.name + '-' +
it.moduleVersion.id.version + '.jar'
instruction 'Bundle-ClassPath', 'META-INF/lib/' + resrc
instruction '-includeresource', 'META-INF/lib/' + resrc + '=' + it.file.path
}
}