什么';使用DS和maven bundle插件生成清单的正确方法是什么?

什么';使用DS和maven bundle插件生成清单的正确方法是什么?,maven,osgi,declarative-services,bnd,maven-bundle-plugin,Maven,Osgi,Declarative Services,Bnd,Maven Bundle Plugin,我今天使用maven bundle插件来生成我的项目清单。由于其他限制,我的模块使用“jar”包装(我不能使用“bundle”包装),目前,我的pom如下所示: <plugin> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestFile>${project.build.ou

我今天使用maven bundle插件来生成我的项目清单。由于其他限制,我的模块使用“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>   

maven jar插件
${project.build.outputDirectory}/META-INF/MANIFEST.MF
org.apache.felix
maven捆绑插件
捆绑清单
进程类
显示
...
我现在想从带注释的组件生成“服务组件”头和DS xml描述符,但添加“
*
”无效:

  • 服务组件标头已正确生成,但jar中不存在xml
  • 如果我在没有明确目标的情况下重新构建maven项目,那么“Service Component”头会有重复的引用:在挖掘代码后,插件使用target/classes/META-INF/manifest.MF中生成的旧清单,并将其与新生成的清单合并。然后连接“服务组件”
  • 那么,我应该如何配置pom以使其工作?现在,我使用“unpacbundle”选项(以便在捆绑包中包含xml)和一个空的src/main/resource/MANIFEST.MF(以便绕过旧清单的合并):它看起来很难看:-)

    此外,“bnd maven插件”按预期工作,但与maven的集成可能太轻(或没有文档记录?),例如父pom中的“全局配置”、捆绑包符号名或捆绑包名称的生成等


    谢谢

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


    看看

    bnd maven插件确实可以按照您的需要工作,为什么不使用它呢?你能更清楚地说明你的担忧是什么吗?我想从maven bundle插件中保留什么:父pom中的全局配置,比如“\u removeheader”指令、版本策略等;从${groupId}.${actifactId}配置Bundle SymbolicName,从项目名称配置Bundle名称,可能还有其他默认名称,我还没有看到。我有500多个bundle需要更改(以及其他人维护的其他依赖项),在bnd指令中使用一组默认值和maven属性可以帮助我:-)所有这些事情都可以在父
    bnd.bnd
    文件中完成,并可能在单个项目的
    bnd.bnd
    中重写。谢谢,我不知道。最后一个问题:“家长bnd”是如何解决的?它可以从maven存储库自动下载吗?我的所有项目都有一个带有一组默认属性的“公司”父pom,它不在本地文件系统中(它看起来与github上的问题952有关,但已关闭)。父bnd文件在父Maven项目中。我不知道你怎么能有一个不在文件系统中的父Maven项目,所以我不能回答你问题的这一部分。我见过它,它看起来很有希望,但我现在找不到Maven捆绑包插件的“标准特性”作为全局配置(父pom?)或来自groupId的捆绑包SymbolicName配置,等