Gradle:从OSGI的MANIFEST.MF依赖项正确构建类路径 [英] Gradle: Properly build classpath from OSGI dependency's MANIFEST.MF

查看:5
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆