2016-10-28 4 views
1

Я построил модуль образца со следующей структурой и зависимости:Gradle + OSGi Liferay7 модуль, включают переходные зависимости

osgi-lfr-module 
+--- module0 
|  \--- org.apache.commons:commons-lang3:3.5 
+--- module1 
|  \--- module0 
\--- module2 
     +--- module1 
     \--- org.apache.commons:commons-collections4:4.1 

Я хочу, чтобы создать единый jar для развертывания в Liferay 7 модулей, содержащих 0, 1 и 2 и сторонние зависимости. Я знаю, что это не рекомендуемый подход, но я хотел бы знать, как его достичь.

module2/build.gradle файл:

buildscript { 
    dependencies { 
     classpath 'com.liferay:com.liferay.gradle.plugins:2.0.10' 
    } 
} 

apply plugin: "com.liferay.plugin" 

sourceCompatibility = "1.8" 
targetCompatibility = "1.8" 

dependencies { 
    compile project(':module1') 

    compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1' 
} 

Я следовал инструкциям из OSGi Module Dependencies. До сих пор, я могу добавить прямые зависимости в module2/bnd.bnd:

Bundle-Version: 1.0.0 
Export-Package: com.test.module2, com.test.module1, com.test.module0 
Bundle-ClassPath: \ 
    .,\ 
    lib/module1.jar,\ 
    lib/commons-collections4.jar 
-includeresource: \ 
    lib/module1.jar=module1-1.0.0.jar,\ 
    lib/commons-collections4.jar=commons-collections4-4.1.jar 

Но если я пытаюсь добавить переходное DEPS, как module0:

Bundle-ClassPath: \ 
    .,\ 
    lib/module0.jar,\ 
    lib/module1.jar,\ 
    lib/commons-collections4.jar 
-includeresource: \ 
    lib/module0.jar=module0-1.0.0.jar,\ 
    lib/module1.jar=module1-1.0.0.jar,\ 
    lib/commons-collections4.jar=commons-collections4-4.1.jar 

сборки не может со следующей ошибкой:

:module2:jar 
[Input file does not exist: module0-1.0.0.jar] 
[No sub JAR or directory lib/module0.jar] 

Может ли кто-нибудь помочь мне узнать, что я делаю неправильно? И, есть ли какой-нибудь способ менее ручной для добавления транзитивных зависимостей?

Заранее за вашу помощь.

+0

Там опечатка во втором' bnd.bnd' фрагмент кода вы добавили: Я думаю, что это должно быть 'Библиотека/module0. jar = module0-1.0.0.jar', а не 'lib/module1.jar = module0-1.0.0.jar'. –

ответ

4

com.liferay.plugin применяет gradle-bundle-plugin для вызова Bnd и создания JAR, поэтому вы можете использовать все его возможности. This это вам нужно, пожалуйста, добавьте его в ваш module2 «s build.gradle:

bundle { 
    includeTransitiveDependencies = true 
} 
+0

Вот и все! Благодарю. –

Смежные вопросы