使用maven-bundle-plugin

时间:2017-01-30 13:50:00

标签: java spring maven osgi bundle

我正在使用maven-bundle-plugin创建MANIFEST.MF。它适用于在java代码中检测到的依赖项,但它忽略了spring XML的内容。例如,我有以下声明:

  <context:mbean-export />

  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

  <bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
    <property name="databasePlatform"
      value="org.eclipse.persistence.platform.database.PostgreSQLPlatform" />
    <property name="generateDdl" value="true" />
  </bean>

所以,显然,我的捆绑包需要导入包org.springframework.orm.jpa.supportorg.springframework.orm.jpa.vendororg.eclipse.persistence.platform.database以及MBean处理器的一些包,我甚至都不知道。

从我记忆中来看,在我参与的项目中,我们使用的是Spring和maven-bundle-plugins,并且所有依赖项检测工作正常,因此我的配置中似乎缺少某些内容。我需要以某种方式通知bundle plugin它应该分析哪个XML文件。

如何让bundle plugin从spring XML中检测依赖项?

这是我的捆绑插件配置:

  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <executions>
      <execution>
        <id>generate-resources</id>
        <goals>
          <goal>manifest</goal>
        </goals>

        <configuration>
          <instructions>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
          </instructions>
        </configuration>
      </execution>
    </executions>
  </plugin>

1 个答案:

答案 0 :(得分:1)

我不确定maven-bundle-plugin是否识别普通弹簧上下文。我知道它适用于蓝图上下文。无论如何要确保你的弹簧背景放在META-INF / spring中。它只会在这个位置被识别出来。

在任何情况下,OSGi中使用spring都不再受支持了。唯一的生产准备方式是spring dm,这个项目已经死了。 Aries蓝图中有完整弹簧的实验支持,但还没有生产等级。

OSGi中经过验证的方法是使用蓝图(例如Aries蓝图)。很长一段时间以来,还有一个maven插件可以在构建期间创建蓝图xml。因此,在您的源代码中,您只使用注释。

请参阅Karaf Tutorial Part 1