我有一个使用Gradle构建工具构建OSGi包的简单用例。如果构建路径中存在java文件,则构建成功,但否则失败。
我在gradle脚本中使用'osgi'插件并尝试在没有任何java文件的情况下构建。构建总是失败并出现以下错误:
无法将MANIFEST.MF复制到
我确信必须有一些方法可以在Gradle中完成它但不能很好。根据您的经验,任何想法可以解决这个问题。
答案 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
插件无法正确应用osgi
和java
插件,但没有Java代码存在。删除java
插件可以解决问题。
答案 2 :(得分:0)
当存在java代码时,我也遇到了同样的问题。 将这两行添加到osgiManifest闭包修复了问题:
classesDir = sourceSets.main.output.classesDir
classpath = sourceSets.main.runtimeClasspath
- erik