问题标签 [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-bundle-plugin 与 maven-shade-plugin 一起使用
我正在使用 maven-shade-plugin 在构建的打包阶段重新定位一些包。我还使用 maven-bundle-plugin 来生成清单。问题是捆绑插件在阴影插件之前运行(在进程类阶段),并且在生成的清单的导出中不包含我的任何阴影包。
我怎样才能让这两个插件相互配合,以便我重新定位的包被捆绑插件像任何其他包一样对待?
--
根据要求,我的 POM 的 Shade 和 bundle 部分:
取自这里
osgi - 通过 maven bundle 和 sling 插件安装 osgi 依赖项
我有一个使用 maven-bundle-plugin 创建的 osgi-bundle:
该捆绑包是通过 maven-sling-plugin 安装的。
我有一个 fasterxml.jackson 依赖项,它作为 .m2 存储库中的 osgi-bundle 存在,并在我的项目中充当依赖项。
如何让 maven 将此依赖项也部署为 osgi-bundle?
目前我必须在我的 osgi-container 中手动安装它。
编辑:
简化:
我如何让 maven 意识到我在 pom.xml 中称为依赖项的 osgi-bundle 应与依赖它的 bundle 一起安装在 osgi-container 中?
maven - CQ5 如何在自定义插件中使用外部 jars
我必须创建自己的插件来解析 xml 并做其他事情。我创建了自己的捆绑插件,其中包含我的解析器类 pom.xml,如下所示:
之后,我想创建将解析 xml 的类,并且我想使用 org.apache.xerces 包。
我还创建了其他包含 org.apache.xerces jar 的包,并且我已经安装了它,它在http://myhost.com:4502/system/console/bundles中处于活动状态。
当我想在核心插件(上面的 pom.xml)中的 Java 类中声明 DOMParser 变量时:
}
然后我在 /crx-quickstart/logs/ 中得到错误:
DOMParser 只是我想使用的示例类。在我的项目中,我需要使用来自其他提供商的外部 jar,即 POC。主要问题是:如何在 CQ5 中使用外部 jar?如何将它们安装到所有自定义插件都将使用这些 jar 的 CQ 中?
当我将 xerces 依赖项更改为
我<Embed-Dependency>xercesImpl;scope=compile</Embed-Dependency>
现在添加了如下错误:
java - 处理拆分包:Require-Bundle 和 maven-bundle-plugin
我正在调整现有的库集合,将它们构建为 OSGi 包。这是一个多模块的 Maven 项目,具有多层 POM 继承和聚合。理想情况下,插件配置将仅放置在父 POM 中。
该项目由100多个罐子组成。已经有一个包含整个库并导出所有包的巨型包。我的努力旨在使库更加模块化,这是首先将它们作为 OSGi 捆绑包的主要原因。
主要问题是这个库有一个拆分包的噩梦,我无法更改包结构。我正在尝试使用OSGi in ActionRequire-Bundle
中的建议来解决问题,即使书中提到这不是一个好习惯。我尝试了使用名为“split”的任意属性来分隔包的各个部分并仅导入某些包的建议。但是由于提供相同软件包的捆绑包数量众多,因此配置起来太复杂了。Import-Package
我的问题是,如果可能的话,如何配置maven-bundle-plugin
<Require-Bundle>
指令以使用通配符(例如 *)作为告诉它使用所有 Maven 依赖项的一种形式,而不必手动列出所有包名称和版本;即是否有替代方法:
使用某种通配符匹配并且可以放在父 POM 中?
osgi - Apache Felix 中 OBR 解析期间的 OSGI Bundle Repository (OBR) 功能冲突
我正在调查在 Felix 中使用 OBR 作为大型应用程序的部署选项,但遇到了一些初始障碍。
采取的方法
- 我创建了一个带有 manifest.mf 的新 jar,其中列出了“Require-Bundle:”部分中的每个应用程序依赖项(基本上是手动部署中的所有内容),一直到第三方库。我的意图是首先声明所有内容,然后将其配对并通过 OBR 解析第三方捆绑包
使用 maven-bundle-plugin 将我的本地 .m2 存储库索引为 OBR
/li>启动 Apache Felix 并添加 OBR 存储库
/li>尝试部署包含整个应用程序包依赖项列表的 jar
/li>
问题
由于使用了 Spring 的依赖注入,javax.inject 上的某些包中有包要求。但是,在 OBR 中,有不止一个捆绑包宣传 javax.inject 的功能。它在 Spring 捆绑包和 Google Guice 捆绑包中都可用。不幸的是,OBR 解析器似乎选择了阻止我的应用程序启动的 Guice 实现。
解决方法
如果我从 OBR 索引中删除 Guice 库,则 OBR 解析器永远不会找到它,因此使用 Spring 实现,并且应用程序启动没有问题。
问题
- 我列出了高级应用程序 jar 中的所有依赖项,包括包含 Spring 的 javax.inject 实现的依赖项。为什么当我明确告诉 Felix 的 OBR 解析器部署一个已经提供它的包时,它会尝试解决包需求?当我尝试以这种方式部署(使用单个捆绑包)时,OBR 解析是否以深度优先的方式发生?
- 我很好奇通常用于创建/维护第三方库的 OBR 存储库以确保没有包功能冲突的策略是什么。是否应该创建和维护较小的 OBR 存储库索引,那些仅包含应用程序依赖项且没有包能力冲突的索引?是否有可以提供帮助的 Maven 插件?
- 更广泛的社区如何通过 OBR 一次部署超过 100 个捆绑包?也许有比父捆绑解决方案更好的选择。
java - BND 在 'uses' 指令中包含相同包的导出包
maven-bundle-plugin
我正在使用 BND将库打包为 OSGi 包。我注意到 BND 生成了一个很长的Export-Package
列表,主要是因为它包含了许多由库本身在uses
其他导出包的指令中导出的包。
我(有点)理解uses
指令。我假设在这种情况下uses
,导出包中的类在方法签名(因此导入)中使用了其他包的类(在 下列出)。
从这个意义上说,我有两个问题:
- 是否真的有必要在导出包的
uses
指令中包含由同一个包导出的包?这些包不会被任何其他包导出;因此没有拆分包。 - 这种行为是否表明库的包结构定义不正确?顶级包使用的几个类通常位于子包中,反之亦然。这是一个被改编为 OSGi 包的库。包结构不是为 OSGi 友好而设计的。
以下是清单中列出的大多数导出包的方式
从上面uses
列表中的所有包中,仅从javax.measure.unit
另一个包中导入。
maven-bundle-plugin
配置:
java - 在 Maven 捆绑插件中结合自动和手动导出包选择
据我所知,Maven 捆绑插件会manifest.mf
根据其来源自动将导出/导入包信息添加到您的捆绑文件中。
有时您需要手动指定导出包,例如,如果您想添加*.impl
包,maven-bundle-plugin 不会自动包含这些包。但是如果你在<Export-Package>
标签中指定包,则不会执行自动导出。如果我只有一个需要手动声明的包,而其他包可以通过此插件自动添加到 export-package 块。所以我想使用自动生成的导出包清单并将手动指定的包添加到其中。
如何在使用手动时打开自动生成导出信息?
deployment - 如何在 maven-bundle-plugin(v2.3.7) 中包含第三方库
我正在使用 servicemix(v4.5.3)并希望通过 maven-bundle-plugin 将我的应用程序(取决于数百个第三方库)部署为捆绑包。
下面是我的 pom.xml
我已经按照这个来创建包,但是当我执行mvn bundle:wrap时,它会将外部 jar 转换为包并放入我项目的目标/类文件夹中。
现在,我的查询是我是否必须复制所有捆绑包并将其放入 servicemix 安装目录的部署文件夹中才能运行我的应用程序。我已经遵循了这种方法,但是在我的应用程序启动时仍然遇到了一些错误。
清单文件:
这只是我的捆绑清单文件的一小部分。这里一些捆绑包仍未解决,我认为启动我的捆绑包的问题。
第二个查询:在使用 maven-bundle-plugin 时是否有更好的方法来处理所有 3rd 方库。等待一些有价值的建议。
java - Maven Bundle Plugin:导出具有私有引用
更新maven-bundle-plugin
从版本2.3.5
到版本2.4.0
运行后mvn clean install
输出一些警告消息,我不完全理解。例如
Export ch.entwine.weblounge.contentrepository.impl.index, has 1, private references [org.elasticsearch.action.bulk]
我想这与嵌入式库(elasticsearch)有关。以下是 POM 的部分内容:
错误消息的确切含义是什么?解决此类问题的推荐方法是什么?
maven - OSGi:如何将 PuTTY scp 与 maven-bundle-plugin 一起使用
我想将我的 maven 编译的 OSGi 包部署到我的远程 OSGi 存储库。我在 Windows 7 上并使用来自 eclipse 的 maven-bundle-plugin (2.3.7)。该存储库位于 linux 上,可通过 ssh 访问。
我已配置settings.xml
为使用plink
和pscp
(Putty 工具)来完成 ssh 工作。在<distributionManagement>
我设置存储库 url 时,它以scpexe://
maven-deploy 目标工作正常,并将 jar 文件和 metadata.xml 上传到存储库。
现在我还希望生成和上传 OBR 元数据。因此,我添加了 maven-bundle-plugin 的配置<remoteOBR>my-repository</remoteOBR>
(与<distributionManagement>
.
执行部署时(在 Maven 部署阶段成功完成后),我收到错误消息。
[错误] 无法在项目引导程序上执行目标 org.apache.felix:maven-bundle-plugin:2.3.7:deploy (default-deploy):传输失败:退出代码:1 - 'scp' 未被识别为内部或外部命令、可运行程序或批处理文件。
-> [帮助 1]
这意味着 maven-bundle-plugin 不使用pscp
settings.xml 中指定的命令,而是使用路径上不可用的“scp”。
如何配置 maven-bundle-plugin 以使用 PuTTY 的 pscp 上传 OBR 数据?