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

maven - 将 maven-bundle-plugin 与 maven-shade-plugin 一起使用

我正在使用 maven-shade-plugin 在构建的打包阶段重新定位一些包。我还使用 maven-bundle-plugin 来生成清单。问题是捆绑插件在阴影插件之前运行(在进程类阶段),并且在生成的清单的导出中不包含我的任何阴影包。

我怎样才能让这两个插件相互配合,以便我重新定位的包被捆绑插件像任何其他包一样对待?

--

根据要求,我的 POM 的 Shade 和 bundle 部分:

取自这里

0 投票
1 回答
1952 浏览

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 中?

0 投票
1 回答
3360 浏览

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> 现在添加了如下错误:

0 投票
1 回答
2049 浏览

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 中?

0 投票
0 回答
450 浏览

osgi - Apache Felix 中 OBR 解析期间的 OSGI Bundle Repository (OBR) 功能冲突

我正在调查在 Felix 中使用 OBR 作为大型应用程序的部署选项,但遇到了一些初始障碍。

采取的方法

  1. 我创建了一个带有 manifest.mf 的新 jar,其中列出了“Require-Bundle:”部分中的每个应用程序依赖项(基本上是手动部署中的所有内容),一直到第三方库。我的意图是首先声明所有内容,然后将其配对并通过 OBR 解析第三方捆绑包
  2. 使用 maven-bundle-plugin 将我的本地 .m2 存储库索引为 OBR

    /li>
  3. 启动 Apache Felix 并添加 OBR 存储库

    /li>
  4. 尝试部署包含整个应用程序包依赖项列表的 jar

    /li>

问题

由于使用了 Spring 的依赖注入,javax.inject 上的某些包中有包要求。但是,在 OBR 中,有不止一个捆绑包宣传 javax.inject 的功能。它在 Spring 捆绑包和 Google Guice 捆绑包中都可用。不幸的是,OBR 解析器似乎选择了阻止我的应用程序启动的 Guice 实现。

解决方法

如果我从 OBR 索引中删除 Guice 库,则 OBR 解析器永远不会找到它,因此使用 Spring 实现,并且应用程序启动没有问题。

问题

  1. 我列出了高级应用程序 jar 中的所有依赖项,包括包含 Spring 的 javax.inject 实现的依赖项。为什么当我明确告诉 Felix 的 OBR 解析器部署一个已经提供它的包时,它会尝试解决包需求?当我尝试以这种方式部署(使用单个捆绑包)时,OBR 解析是否以深度优先的方式发生?
  2. 我很好奇通常用于创建/维护第三方库的 OBR 存储库以确保没有包功能冲突的策略是什么。是否应该创建和维护较小的 OBR 存储库索引,那些仅包含应用程序依赖项且没有包能力冲突的索引?是否有可以提供帮助的 Maven 插件?
  3. 更广泛的社区如何通过 OBR 一次部署超过 100 个捆绑包?也许有比父捆绑解决方案更好的选择。
0 投票
1 回答
1597 浏览

java - BND 在 'uses' 指令中包含相同包的导出包

maven-bundle-plugin我正在使用 BND将库打包为 OSGi 包。我注意到 BND 生成了一个很长的Export-Package列表,主要是因为它包含了许多由库本身在uses其他导出包的指令中导出的包。

我(有点)理解uses指令。我假设在这种情况下uses,导出包中的类在方法签名(因此导入)中使用了其他包的类(在 下列出)。

从这个意义上说,我有两个问题:

  1. 是否真的有必要在导出包的uses指令中包含由同一个包导出的包?这些包不会被任何其他包导出;因此没有拆分包。
  2. 这种行为是否表明库的包结构定义不正确?顶级包使用的几个类通常位于子包中,反之亦然。这是一个被改编为 OSGi 包的库。包结构不是为 OSGi 友好而设计的。

以下是清单中列出的大多数导出包的方式

从上面uses列表中的所有包中,仅从javax.measure.unit另一个包中导入。

maven-bundle-plugin配置:

0 投票
1 回答
1976 浏览

java - 在 Maven 捆绑插件中结合自动和手动导出包选择

据我所知,Maven 捆绑插件会manifest.mf根据其来源自动将导出/导入包信息添加到您的捆绑文件中。

有时您需要手动指定导出包,例如,如果您想添加*.impl包,maven-bundle-plugin 不会自动包含这些包。但是如果你在<Export-Package>标签中指定包,则不会执行自动导出。如果我只有一个需要手动声明的包,而其他包可以通过此插件自动添加到 export-package 块。所以我想使用自动生成的导出包清单并将手动指定的包添加到其中。

如何在使用手动时打开自动生成导出信息?

0 投票
1 回答
738 浏览

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 方库。等待一些有价值的建议。

0 投票
1 回答
6331 浏览

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 的部分内容:

错误消息的确切含义是什么?解决此类问题的推荐方法是什么?

0 投票
1 回答
1063 浏览

maven - OSGi:如何将 PuTTY scp 与 maven-bundle-plugin 一起使用

我想将我的 maven 编译的 OSGi 包部署到我的远程 OSGi 存储库。我在 Windows 7 上并使用来自 eclipse 的 maven-bundle-plugin (2.3.7)。该存储库位于 linux 上,可通过 ssh 访问。

我已配置settings.xml为使用plinkpscp(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 不使用pscpsettings.xml 中指定的命令,而是使用路径上不可用的“scp”。

如何配置 maven-bundle-plugin 以使用 PuTTY 的 pscp 上传 OBR 数据?