【发布时间】:2015-05-13 04:13:57
【问题描述】:
我有一些 Java/OSGi 项目希望构建并打包为单个部署包。
我正在使用 Tycho 为特定目标平台编译源代码,所有依赖项都在本地 p2 存储库中。
如果我在我的 pom.xml 中设置 <packaging>eclipse-plugin</packaging>,构建会正常,但我会得到一个 .jar 作为输出。
当我使用 maven-bundle-plugin 并设置 <packaging>bundle</packaging> 时,构建中断,因为它使用标准 maven-compiler-plugin 而不是 Tycho 进行编译。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.5</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
<Bundle-Name>${project.name}</Bundle-Name>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>
javax.net;resolution:=optional,
javax.net.ssl;resolution:=optional
</Import-Package>
<Export-Package>my.project.package</Export-Package>
</instructions>
</configuration>
</plugin>
如何强制使用 Tycho 进行编译?或者有什么其他方法可以做我需要的吗?
【问题讨论】:
-
如果您的依赖项位于 P2 存储库中,您最好使用 Tycho 和
eclipse-plugin打包。这将为每个项目创建一个 OSGi 包 jar。之后你想做什么?single Deployment Package是什么意思? (zip、P2、一些特定于容器的包?) -
我想将许多项目(=OSGi 包)打包到一个 .dp 文件中。 Deployment Package 在 OSGi Service Platform Service Compendium 的“114 部署管理规范”段中定义。基本上,把所有这些罐子放在一个大罐子里:这就是 dp。
-
我不知道现有 maven 插件中对 Deployment Admin 的任何支持,也不知道任何使用它的容器。如果您确实想像这样打包您的捆绑包,
maven assembly plugin可能是一个选项。 -
感谢您的提示,我会深入研究
maven assembly plugin。我可以手动构建 DP,所以我很确定我所做的是正确的……另一方面,这违背了使用 Maven 的全部目的。 -
作为 Tycho 提交者,我从未听说过构建部署包的要求。如果你想提升需求,你应该open an enhancement request in Tycho's issue tracker
标签: java maven osgi tycho osgi-bundle