问题标签 [maven-bundle-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3752 浏览

apache-felix - OSGi 和传递依赖

我正在为我的 OSGi 项目使用 Felix 框架,但我遇到了一个关于第三方依赖项的严重问题。

我正在使用 eclipse 和 maven-bundle-plugin 从源代码和 POM.XML 文件中的 MANIFEST.MF 生成我的包。到目前为止,一切都很好。但是,当我的包中有一些第三方依赖项时,我发现自己正在寻找一个无限的 JAR 列表,这些 JAR 通常不是包,并将它们放在我的 /bundle Felix 目录中,直到不再缺少依赖项。

我将此过程称为“下载 Internet 以使我的 OSGi 应用程序正常工作”。

我究竟做错了什么?当然我一定做错了什么,因为我无法想象任何人拥有一个依赖于 B 的捆绑 A,然后依赖于 C 和 D,然后这两个将依赖于其他几个等等......去寻找所有这些依赖项都使用 google 或 maven Central 手动完成!这太疯狂了!

自动化的正确方法是什么?我很想拥有以下两种解决方案之一:

1) 能够创建一个嵌入了所有依赖项的大型 JAR 文件,但只导出我想要的包,而且,更确切地说,不导入任何包。

2)(我的首选解决方案)有一​​种方法可以将我的所有依赖项放入单独的 JAR 文件中,我可以简单地将其粘贴到 /bundle 目录中。

3)(甚至更受欢迎)有一种方法可以使用第三方 JAR,而无需将 8GB 的​​依赖项下载到我的项目中。

我找到了可以做到这一点的工具,但仅适用于直接(一级)依赖项,而传递依赖项则由我手动解决。

这个问题很关键。缺乏这样的工具阻碍了 OSGi 的使用。搜了搜搜了搜,PAX、bndtools、朋友之类的101个解决方案都遇到过,但是好像都没有解决这个问题……</p>

请帮我。如果可以的话,请提供一个活生生的例子,世界各地像我这样的人将从这个问题的解决方案中受益。

谢谢!

-

-

编辑:我附上了一个示例项目,我在其中尝试使用 JScience,但生成的 JAR 包一直要求我提供新的 Imports,即它不是独立的。

示例链接:https ://www.dropbox.com/s/svo3nu3vawvv2xn/RequireJscienceExample.zip?dl=0

我通常尝试使用 Eclipse 将 3rd 方 JAR 转换为包,但他们总是必须导入我没有的包,所以正如你所说,这是一个无穷无尽的情况。

我找不到任何关于 maven-bundle-plugin 的标签 Conditional_Package 的文档。然而,相关搜索向我展示了我之前尝试过但没有成功的内联选项。

我创建了一个基本项目,其中我有一个使用 JScience 库的类,在它的 POM.XML 中我有以下内容:

我是说 maven 内联所有不是来自 osgi 框架本身的包。看看生成的 JAR,它看起来相当不错,我现在只嵌入了包而不是整个 JAR(但是在我看来,我不需要所有这些内联包,因为我只使用了其中两个)。此外,如果我打开 MANIFEST.MF 文件,我可以看到这个有问题的行:

说我缺少 org.joda.convert 和 org.xml.sax。

令我惊讶的是,我们正在谈论一个声明与 OSGi 兼容的库(JScience):http: //jscience.org/

我错过了什么?我真的不能不使用 JScience。而且我之前拒绝了几个 3rd 方库,因为这些 OSGi 3rd 方集成困难,这可以节省我的开发时间。

0 投票
2 回答
392 浏览

osgi - 使用 src 代替 target 进行打包

当我在我的项目上运行命令“mvn package”时,来自 src/main/resources/META-INF 的资源文件(如 persistence.xml、persistence.xml.dev、persistence.xml.qa 等)被打包在包中。我需要帮助让 mvn-bundle-plugin 查看目标文件夹而不是 src 文件夹,因为我的目标文件夹将只有一个资源文件 persistence.xml。我的 pom mave-bundle-plugin 在下面

0 投票
2 回答
2431 浏览

maven - Plans to support "Require-Bundle" in maven-bundle-plugin

Are there plans to support "Require-Bundle" in maven-bundle-plugin, even if its not the recommended OSGi way. There are situations where it makes sense to use "Require-Bundle", for example to merge split packages.

0 投票
3 回答
2035 浏览

java - OSGI 编号进口限制

我正在构建一个 OSGI 基础应用程序,在我的一个课程中,我做了大量的导入(arround 30),当我启动应用程序时,我得到了这个异常:

当我评论代码并减少导入数量时,一切都很好。

这似乎是一个 OSGI 限制,我该如何解决这个问题?

谢谢,

0 投票
1 回答
736 浏览

java - maven-bundle-plugin 创建意外的 Import-Package 内容

我使用构建所有捆绑包maven-bundle-plugin,经过一些测试后,pax:provision我发现它正在Import-Package=org.osgi.framework;version="[1.8,0)"所有捆绑包上创建一个,并且在 Felix 中安装捆绑包时,我的所有捆绑包都未解决,因为org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement [55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0))).

maven-bundle-plugin如果我对该包没有直接依赖关系,为什么要创建此标头。我还尝试添加依赖项:

它仍然使用该版本1.8.0。知道为什么吗?

更新

再次检查,捆绑包确实使用org.osgi.framework了 Activator 中的 。但是这个类org.osgi.framework.BundleActivator来自捆绑:

再说一遍,为什么不maven-bundle-plugin使用版本4.3.1而不是1.8.0?在其他捆绑包中,它使用 version 1.6.2

2015 年 3 月 20 日更新

这是我执行后收到的异常mvn pax:provision

当然,似乎这个异常只在使用时发生mvn pax:provision,如果我在独立的 Felix 实例中安装相同的包,那么一切都按预期工作。

0 投票
1 回答
37 浏览

maven - 将不同包中的 ServletContainerInitializer 打包到单个 OSGi 包中

我正在创建一个 OSGi 包,其中包含以下依赖项

我想在 websocket 和 jasper 中打包 SCI。

我的 IncludeResource 部分如下

这里的问题是我只得到 websocket SCi。我认为 jasper 资源被 websocket 资源覆盖。取决于我指定它们的顺序。

如何将两个资源放在同一个包中?

0 投票
1 回答
355 浏览

maven - 减少 OSGi Bundle 中导入包的数量

在 OSGi 包中,我试图删除*;resolution=optional并指定特定的导入。当我在运行时检查时,导入如下

我可以这样减少吗?

这是一个好习惯吗?

当我使用以后的配置构建 jar 时,仍然在 MANIFEST 文件中,它在包旁边显示 resolution=optional

已编辑

依赖部分

0 投票
2 回答
2655 浏览

osgi - 如何使用 Maven 捆绑插件将包排除在捆绑之外

我有一个使用 maven-jaxb2-plugin 生成所有类到目标/生成/src/main/java 的包。然后我使用 maven bundle 插件创建一个包。它很简单。

现在,我想从这个包中排除(删除)一个生成的包 com.xxx.yyyy.common。所以我使用:

但是在有了捆绑包之后,该包仍然存在于捆绑包中。

0 投票
1 回答
527 浏览

java - 避免将某些包复制到 OSGi Bundle

在使用 maven bundle 插件创建 OSGi 包时,我想从复制中排除一些包。

!package name在导出部分使用。但是由于我使用的是@openejb-core-${openejb.version}.jar!/**,所以在包含资源部分中,该包被复制到包中。

如何避免使用 maven bundle 插件复制特定的包或一组包?

我可以在资源部分使用名称,但我不想一一列出。

0 投票
3 回答
6693 浏览

java - 当使用带有 maven-bundle-plugin 目标的“bundle”打包时,会执行两次

我有一个(简单)maven 项目,其包装类型为“bundle”,使用org.apache.felix:maven-bundle-plugin:2.5.4. 它会生成一个正确的 OSGI 包 jar。但是我观察到所有目标都至少执行了两次。我该如何防止这种情况?问题是一些目标(本例中的 checkstyle)很慢,所以重复执行是一个问题。

注意:我从命令行使用 maven 3.2.5。

输出或mvn clean install(删除所有不相关的信息)。请注意,许多插件执行了 4 次。maven-checkstyle-plugin被执行两次。

额外信息:

父 POM

OSGI 包的 POM:

更新:这是一个已知错误(另见答案 K Erlandsson):https ://issues.apache.org/jira/browse/FELIX-4882

此问题现已解决(maven-bundle-plugin-2.5.5