我已经构建了一个具有以下结构和依赖关系的示例模块:
osgi-lfr-module
+--- module0
| \--- org.apache.commons:commons-lang3:3.5
+--- module1
| \--- module0
\--- module2
+--- module1
\--- org.apache.commons:commons-collections4:4.1
我想在Liferay 7中构建一个jar
部署,其中包含模块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
但是,如果我尝试添加传递代数,例如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 :(得分:4)
com.liferay.plugin
应用gradle-bundle-plugin
来调用Bnd并创建JAR,因此您可以使用其所有选项。 This是您需要的,请将其添加到 module2 的build.gradle
:
bundle {
includeTransitiveDependencies = true
}