Gradle:从OSGI的MANIFEST.MF依赖项正确构建类路径 [英] Gradle: Properly build classpath from OSGI dependency's MANIFEST.MF
本文介绍了Gradle:从OSGI的MANIFEST.MF依赖项正确构建类路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
My 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
此处导出两个包:
- test.lib包由osgides.jar中包含的lib/lib.jar提供
- test.osgidep包由osgides.jar本身提供
现在,我的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包不存在。
如何告诉Gradle根据依赖项的MANIFEST.MF项生成正确的类路径?
推荐答案
您的问题是,您需要编译的某些类型"隐藏"在osgidep
的捆绑包类路径中。javac
对捆绑类路径一无所知。您需要将lib.jar
提取到某个位置,以便将其添加到osgiapp
的编译依赖项中。如果您需要将包用作编译依赖项,那么像lib.jar
这样的嵌入式JAR是有问题的。
这篇关于Gradle:从OSGI的MANIFEST.MF依赖项正确构建类路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文