Gradle中的OSGi捆绑构建问题

时间:2013-06-01 08:25:26

标签: gradle blueprint-osgi

我有一个使用Gradle构建工具构建OSGi包的简单用例。如果构建路径中存在java文件,则构建成功,但否则失败。

我在gradle脚本中使用'osgi'插件并尝试在没有任何java文件的情况下构建。构建总是失败并出现以下错误:

无法将MANIFEST.MF复制到

我确信必须有一些方法可以在Gradle中完成它但不能很好。根据您的经验,任何想法可以解决这个问题。

3 个答案:

答案 0 :(得分:2)

我今天遇到了这个,@ Peter的修复对我不起作用(我没有首先应用java插件......)。然而,经过数小时的谷歌搜索后,我确实找到了this thread,这帮助我找到了问题。

基本上,当jar中没有找到类文件时,似乎发生了错误(as Peter stated) - 我的猜测是因为插件无法扫描类的包名,而是基于所有{{ 1}}和Import信息。

我的解决方案是将以下内容添加到清单规范中:

Export

在我的实际构建代码中,我遍历所有源集以为它们创建classesDir = theSourceSet.output.classesDir classpath = theSourceSet.runtimeClasspath 任务,因此它看起来像这样:

jar

答案 1 :(得分:0)

使用--stacktrace运行表示osgi插件无法正确应用osgijava插件,但没有Java代码存在。删除java插件可以解决问题。

答案 2 :(得分:0)

当存在java代码时,我也遇到了同样的问题。 将这两行添加到osgiManifest闭包修复了问题:

classesDir = sourceSets.main.output.classesDir
classpath = sourceSets.main.runtimeClasspath        

- erik