问题标签 [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 投票
2 回答
2774 浏览

maven - Maven构建jar:合并依赖项中的重复资源

我遇到了这个问题:

我有一个带有spring-boot的项目。它在 eclipse 上完美运行,但我需要生成一个带有依赖项的 jar,所以我将 maven-assembly-plugin 配置添加到 pom.xml 中。

一些 spring 依赖项在 META-INF 中有一个名为 spring.schemas 的文件,我需要将所有 spring.schemas 合并为一个(spring-context、spring-beans 等)

我使用 maven-shade-pluggin 和 AppendingTransformer 尝试了这个解决方案,它完美地合并了所有 spring.schemas ......但是它有一个问题,当我执行 jar 时,它失败了:

所以,shade插件压缩jar,spring-boot不喜欢,也没有办法关闭shade压缩。我手动复制了 shade 生成的 shade spring.schemas 并将其放入 maven-assembly-pluggin 生成和未压缩的具有依赖关系的 jar 中。有用。

然后我尝试将生成的 spring.schemas 包含到我的资源文件夹中,但它总是被 spring-context 中的 spring.schemas 覆盖。

我还尝试了其他解决方案,以在程序集中使用描述符 XML 从依赖项 jar 中排除 spring.schemas,但它不起作用:

这是我的依赖项:

有任何想法吗?提前致谢

0 投票
3 回答
7488 浏览

java - OSGI 捆绑包依赖项

我创建了一个依赖于 SLF4J 的包,因此我将 Logback 用于 OSGI 实现。这一切都捆绑并安装好,但是当我开始捆绑时,我得到以下异常:

org.osgi.framework.BundleException:无法解析 com.felix.test [20](R 20.0):缺少要求 [com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang) 未解决的需求:[[com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang)]

我可以在我的清单文件中看到,我groovy.langImport-Package确定问题是嵌入了 Logback,但没有一个引用。

我用来创建捆绑包,这是配置:

这是我的清单:

我是正确的方法还是有更好的方法?

谢谢!

0 投票
2 回答
94 浏览

google-maps - Google 地图类未显示在 MANIFEST.MF 的 Import-Package 中

我正在使用maven-bundle-plugin并尝试捆绑 Google 地图依赖项。

当我检查 JAR (Manifest.MF) 时,我可以看到com.google.maps.modelinExport-Package但看不到Import-Package. 我怎样才能得到它Import-Package呢?

这个问题链接到以前未解决的问题How to import a class from thirdparty jar file in an OSGi component

0 投票
2 回答
316 浏览

osgi - Maven Bundle Plugin R6 元类型

我正在尝试使用maven-bundle-pluginosgi r6 元类型注释来构建包。

我创建了一个配置类

我在我的组件类中使用它。

但是当我构建它时,生成的元类型文件看起来不正确,并且它没有加载到配置管理中。这是生成的(它缺少指定部分)

这是我的 pom 中的捆绑插件

我主要是通过这个家伙的挫败感来做到这一点的 https://github.com/bndtools/bnd/issues/1030

https://groups.google.com/forum/#!msg/bndtools-users/_F0Nr8b7rlQ/2A9x660pAgAJ

0 投票
1 回答
86 浏览

apache-felix - 不要从特定的 jar 加载/扫描类文件

我想知道如何配置 maven-bundle-plugin(由 bnd 支持)以完全忽略嵌入式 jar 中包含的类。

背景

我在一个受控环境中工作,我的代码运行的环境由一家公司(包括所有工具)定义。代码是java并且使用OSGi来定义模块依赖。

一些提供的模块包含看起来像无效的类文件,我只能假设系统会在尝试将它们加载到任何类型的 JVM 之前“纠正”这些类文件。在任何情况下,这些类文件在部署到目标系统时都可以工作。

我正在尝试创建一个基于 Maven 的构建系统,该系统可以生成系统理解的包,并且遇到了一个问题,即 BND(通过 apache-felix)正在读取这些无效的类文件,这会导致错误。

我想要一种方法让包含这些类文件的 jar 放在包的类路径上,但其中包含的.class文件不被 bnd 读取/处理。我可以满足于简单地忽略错误并继续,但如果不让 felix 中止整个构建阶段,我也找不到办法做到这一点。

0 投票
1 回答
80 浏览

osgi - 标头的 OSGi 片段包合并

如果我创建一个片段包并在 maven-bundle-plugin instractions 下添加一个新的标头条目。该新条目会在运行时与主机包头列表合并吗?

0 投票
1 回答
380 浏览

java - 运行 Maven OSGi 项目时出错

我正在尝试运行一个 maven OSGi 捆绑项目,但我得到:

System.out.println(framework.getBundleContext().getService(reference));下面initialize()

我似乎无法正确处理。我是 OSGi 的新手。请帮助我让项目运行。谢谢大家。

这是我嵌入我的 OSGi 框架的方式,然后尝试启动服务:

这是我导出rev.core.api服务包的方式:

0 投票
2 回答
441 浏览

java - 如何使用声明式服务管理多个服务实例?

我正在尝试在 OSGi 中构建一个可以读取给定格式文件的服务。

服务接口如下所示:

Data 对象是一个类,它定义了要读取的文件的数据结构(它们应该包含相同类型的数据)。

这个想法是有不同的服务实现,例如:

还可能有其他实现,例如 XmlFileReader、MdFileReader 等。

最后,我想要一个像这样的 FileReaderFactory:

我想要的是 DS 在工厂列表中动态注入 FileReaderServices。根据提供的服务数量,我会支持(或不支持)给定的文件格式。

我的问题是:

1)这对DS可行吗?

2)如果是,如何使用DS注释来做到这一点?

3)如果没有,你会怎么做?

谢谢

编辑:我尝试了 Christian 的解决方案,但它没有工作(还)。完整代码可以在这里下载:https ://github.com/neopium/FileReader

0 投票
1 回答
562 浏览

maven - 使用 DS 和 maven-bundle-plugin 生成清单的正确方法是什么?

我今天使用 maven-bundle-plugin 来生成我的项目清单。由于其他限制,我的模块使用“jar”包装(我不能使用“bundle”包装),目前,我的 pom 看起来像这样:

我现在想从带注释的组件中生成一个“Service-Component”标头和 DS xml 描述符,但是添加“ <_dsannotations>*</_dsannotations>”不起作用:

  1. Service-Component 标头已正确生成,但 jar 中不存在 xml
  2. 如果我在没有明确目标的情况下重建我的 maven 项目,则“Service-Component”标头有重复的引用:在挖掘代码后,插件使用来自 target/classes/META-INF/MANIFEST.MF 的旧生成清单并合并它与新生成的。然后连接“服务组件”

那么,我应该如何配置我的 pom 以使其正常工作?现在,我使用“unpackBundle”选项(为了在我的包中包含 xml)和一个空的 src/main/resource/MANIFEST.MF(为了绕过旧清单的合并):它看起来很丑: -)

此外,“bnd-maven-plugin”按预期工作,但与 maven 的集成可能太轻(或没有记录?),作为父 pom 中的“全局配置”,Bundle-SymbolicName 或 Bundle-Name 的生成, ETC。

谢谢!

0 投票
2 回答
1659 浏览

osgi - 如何在解决依赖关系时强制我的 OSGI 包忽略冲突的包

我正在使用 AEM 5.6.1。当在控制台中手动安装 jax-b api 2.2.12 时,我的包中的 JAXB 出现异常。由于 JAX-b(2.1.0) 已通过以下捆绑包在 AEM 内部提供。当 2.2.12 不存在时,不会发生此异常。此外,如果在我的捆绑包之后安装了 jax-b 2.2.12,则完全没有问题。

然而,这个新版本正被不同供应商开发的另一个捆绑包使用。因此,我无法从 felix 控制台中删除这个新包。

提供原始 JAX-B 2.1.0 的系统包

我只是想知道如何强制我的包忽略寻找 jax-b 2.2.12 并通过使用 maven pom 的某些配置仅采用系统默认 2.1.0 版本。特别是在 POM 中的 maven bundle 插件中。

在我的 ABC 类中激活方法:

当前 Bundle 插件导入包定义:

例外:

任何帮助将非常感激。