我的gradle项目(“osgiapp”)依赖于OSGI项目(“osgidep”),该项目具有以下MANIFEST.MF条目:
Manifest-Version: 1.0
Export-Package: test.lib,test.osgidep
Bundle-ClassPath: lib/lib.jar,.
Bundle-Name: osgidep
Bundle-Version: 1.0
Bundle-SymbolicName: osgidep
这里导出两个包:
现在,我的build.gradle看起来像这样:
apply plugin: 'java'
apply plugin: 'osgi'
repositories {
flatDir {
dirs "../osgidep"
}
}
dependencies {
compile ":osgidep:"
}
当我尝试构建使用两个导出包的代码时:
package test.osgi;
import test.lib.Lib;
import test.osgidep.OsgiDep;
public class Test
{
Lib lib = new Lib();
OsgiDep dep = new OsgiDep();
}
我收到编译错误,指出test.lib包不存在。
如何根据依赖项的MANIFEST.MF条目告诉gradle生成正确的类路径?
答案 0 :(得分:0)
您的问题是编译osgiapp
所需的某些类型在osgidep
的Bundle-Classpath中被“隐藏”。 javac
对Bundle-Classpath一无所知。您需要在某处提取lib.jar
,以便将其添加到osgiapp
的编译依赖项中。如果您需要将bundle用作编译依赖项,那么像lib.jar
这样的嵌入式jar就有问题。