问题标签 [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.
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,但它不起作用:
这是我的依赖项:
有任何想法吗?提前致谢
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.lang
很Import-Package
确定问题是嵌入了 Logback,但没有一个引用。
我用来创建捆绑包,这是配置:
这是我的清单:
我是正确的方法还是有更好的方法?
谢谢!
google-maps - Google 地图类未显示在 MANIFEST.MF 的 Import-Package 中
我正在使用maven-bundle-plugin
并尝试捆绑 Google 地图依赖项。
当我检查 JAR (Manifest.MF) 时,我可以看到com.google.maps.model
inExport-Package
但看不到Import-Package
. 我怎样才能得到它Import-Package
呢?
这个问题链接到以前未解决的问题How to import a class from thirdparty jar file in an OSGi component
osgi - Maven Bundle Plugin R6 元类型
我正在尝试使用maven-bundle-plugin
osgi r6 元类型注释来构建包。
我创建了一个配置类
我在我的组件类中使用它。
但是当我构建它时,生成的元类型文件看起来不正确,并且它没有加载到配置管理中。这是生成的(它缺少指定部分)
这是我的 pom 中的捆绑插件
我主要是通过这个家伙的挫败感来做到这一点的 https://github.com/bndtools/bnd/issues/1030
https://groups.google.com/forum/#!msg/bndtools-users/_F0Nr8b7rlQ/2A9x660pAgAJ
apache-felix - 不要从特定的 jar 加载/扫描类文件
我想知道如何配置 maven-bundle-plugin(由 bnd 支持)以完全忽略嵌入式 jar 中包含的类。
背景
我在一个受控环境中工作,我的代码运行的环境由一家公司(包括所有工具)定义。代码是java并且使用OSGi来定义模块依赖。
一些提供的模块包含看起来像无效的类文件,我只能假设系统会在尝试将它们加载到任何类型的 JVM 之前“纠正”这些类文件。在任何情况下,这些类文件在部署到目标系统时都可以工作。
我正在尝试创建一个基于 Maven 的构建系统,该系统可以生成系统理解的包,并且遇到了一个问题,即 BND(通过 apache-felix)正在读取这些无效的类文件,这会导致错误。
我想要一种方法让包含这些类文件的 jar 放在包的类路径上,但其中包含的.class
文件不被 bnd 读取/处理。我可以满足于简单地忽略错误并继续,但如果不让 felix 中止整个构建阶段,我也找不到办法做到这一点。
osgi - 标头的 OSGi 片段包合并
如果我创建一个片段包并在 maven-bundle-plugin instractions 下添加一个新的标头条目。该新条目会在运行时与主机包头列表合并吗?
java - 运行 Maven OSGi 项目时出错
我正在尝试运行一个 maven OSGi 捆绑项目,但我得到:
在System.out.println(framework.getBundleContext().getService(reference));
下面initialize()
。
我似乎无法正确处理。我是 OSGi 的新手。请帮助我让项目运行。谢谢大家。
这是我嵌入我的 OSGi 框架的方式,然后尝试启动服务:
这是我导出rev.core.api
服务包的方式:
java - 如何使用声明式服务管理多个服务实例?
我正在尝试在 OSGi 中构建一个可以读取给定格式文件的服务。
服务接口如下所示:
Data 对象是一个类,它定义了要读取的文件的数据结构(它们应该包含相同类型的数据)。
这个想法是有不同的服务实现,例如:
还可能有其他实现,例如 XmlFileReader、MdFileReader 等。
最后,我想要一个像这样的 FileReaderFactory:
我想要的是 DS 在工厂列表中动态注入 FileReaderServices。根据提供的服务数量,我会支持(或不支持)给定的文件格式。
我的问题是:
1)这对DS可行吗?
2)如果是,如何使用DS注释来做到这一点?
3)如果没有,你会怎么做?
谢谢
编辑:我尝试了 Christian 的解决方案,但它没有工作(还)。完整代码可以在这里下载:https ://github.com/neopium/FileReader
maven - 使用 DS 和 maven-bundle-plugin 生成清单的正确方法是什么?
我今天使用 maven-bundle-plugin 来生成我的项目清单。由于其他限制,我的模块使用“jar”包装(我不能使用“bundle”包装),目前,我的 pom 看起来像这样:
我现在想从带注释的组件中生成一个“Service-Component”标头和 DS xml 描述符,但是添加“ <_dsannotations>*</_dsannotations>
”不起作用:
- Service-Component 标头已正确生成,但 jar 中不存在 xml
- 如果我在没有明确目标的情况下重建我的 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。
谢谢!
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 插件导入包定义:
例外:
任何帮助将非常感激。