【问题标题】:What's the proper way to generate a manifest with DS and maven-bundle-plugin?使用 DS 和 maven-bundle-plugin 生成清单的正确方法是什么?
【发布时间】:2016-01-20 20:56:00
【问题描述】:

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

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>  
        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
      </archive> 
   </configuration>
</plugin>     
<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <executions>
    <execution>
      <id>bundle-manifest</id>
      <phase>process-classes</phase>
      <goals>
        <goal>manifest</goal>
      </goals>
      <configuration>
        <instructions>
         ...
        </instructions>
      </configuration>
    </execution>
  </executions> 
</plugin>   

我现在想从我的注释组件生成一个“服务组件”标头和 DS xml 描述符,但添加“&lt;_dsannotations&gt;*&lt;/_dsannotations&gt;”不起作用:

  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 等。

谢谢!

【问题讨论】:

  • bnd-maven-plugin 确实可以按您的意愿工作,那么为什么不使用它呢?你能更清楚你的担忧是什么吗?
  • 我想从 maven-bundle-plugin 中保留的内容:父 pom 中的全局配置,如“_removeheader”指令、版本策略等;从 ${groupId}.${actifactId} 配置 Bundle-SymbolicName,从项目名称配置 Bundle-Name,可能还有其他我还没有看到的默认值。我有 500 多个包要更改(以及其他人维护的其他依赖项),并且在 bnd 指令中使用一组默认值和 maven 属性可以帮助我:-)
  • 所有这些事情都可以在父 bnd.bnd 文件中完成,并且可能在单个项目的 bnd.bnd 中被覆盖。
  • 谢谢,我不知道。最后一个问题:“父bnd”是如何解决的?可以从 Maven 存储库自动下载吗?我所有的项目都有一个带有一组默认属性的“公司”父 pom,它不在本地文件系统中(它看起来与 github 上的问题 952 相关,但已关闭)
  • 父bnd文件在父Maven项目中。我不知道你怎么能有一个不在文件系统中的父 Maven 项目,所以我无法回答你的那部分问题。

标签: maven osgi declarative-services bnd maven-bundle-plugin


【解决方案1】:

有一个更新的 maven 插件,它更接近 bnd 和 maven。此插件不会接管 jar 目标并正确遵循 maven 阶段。

看看http://njbartlett.name/2015/03/27/announcing-bnd-maven-plugin.html

【讨论】:

  • 我已经看到了,它看起来很有前途,但我现在找不到 maven-bundle-plugin 的“标准功能”作为全局配置(父 pom?)或Bundle-SymbolicName 来自 groupId 等。
猜你喜欢
  • 2014-06-23
  • 2015-06-12
  • 1970-01-01
  • 2011-06-18
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2012-09-18
相关资源
最近更新 更多