Liferay нерешенное требование - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно использовать некоторые классы в проекте модуля liferay из другого проекта Java. Я использую gradle, и при развертывании своего приложения я получаю сообщение об ошибке Unresolved требование, даже если gradle компилирует мой jar-файл.

Вот что я сделал до сих пор, мой gradle.build:

compile files('libs/p01-jdbc.jar')  
compileOnly group: "org.mql.biblio.dao.jdbc", name: "p01-jdbc", version: "default"

Мой bnd файл:

Bundle-Name: Inter_Portlet_Communication
Bundle-SymbolicName: Inter_Portlet_Communication
Bundle-Version: 1.0.0
Export-Package: \
    com.mql.ipc.constants
Include-Resource: @p01-jdbc.jar

И мой импорт

import org.mql.biblio.dao.jdbc.DataBase;
import org.mql.biblio.dao.jdbc.DataSource;
import org.mql.biblio.dao.jdbc.MySQLDataSource;

P.S: jar, который я собираю, также использует локальный mysql.jar (в папке с именем lib).

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы не должны слепо compileInclude все, пока "это не работает".Проверьте эту статью , чтобы узнать, что вы сделали - гораздо предпочтительнее , а также просто разверните зависимости в контейнере OSGi - в случае, если они также являются пакетами OSGi.Или, в качестве альтернативы, сделайте их также OSGi-комплектами.

В случае, если p01-jdbc.jar уже является OSGi-комплектом: разверните его на Liferay.В случае, если это пользовательская библиотека, но еще не пакет OSGi, я бы предпочел сделать ее одной, а затем см. Выше.

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

0 голосов
/ 21 марта 2019

Нашел ответ на мою проблему, мне пришлось использовать compileInclude вместо compile. Мне также нужно было добавить строку для другого jar-файла, необходимого для моего jar-файла зависимости:

compileInclude files('libs/p01-jdbc.jar') 
compileInclude files('libs/mysql.jar') //This jar is used by the first one
...