2017-01-30 97 views
0

我正在使用maven-bundle-plugin创建MANIFEST.MF。它在Java代码中检测到依赖关系时正常工作,但它忽略了Spring XML的内容。例如,我有以下声明:使用maven-bundle-plugin包含来自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插件应该分析哪个XML文件。

如何使bundle插件从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> 
+0

您使用的是哪个版本的maven-bundle-plugin? –

+0

@ChristianSchneider mvn -Dplugin = org.apache.felix:maven-bundle-plugin help:describe告诉我,3.2.0 –

回答

1

我不知道,如果Maven的捆绑,插件识别平原春天背景。我知道它适用于蓝图上下文。无论如何,确保你的春天背景被放置在META-INF/spring中。它只会在这个位置得到认可。

在任何情况下在OSGi中使用弹簧都不再支持。唯一的生产就绪方式是春天,这个项目已经死了。在白羊座的蓝图中有一个完整的春天的实验支持,但它还没有生产等级。

OSGi中经过验证的方式是使用蓝图(例如白羊座蓝图)。既然现在有一段时间了,还有一个Maven插件可以在构建过程中创建蓝图xml。所以在你的源代码中你只能使用注释。

请参阅Karaf Tutorial Part 1

+0

是的,但是如果spring context不在META-INF/spring中,是否可以通知捆绑插件,使用其他位置? –

+0

您可以在Manifest头Spring-Context中设置spring xml位置。请参阅http://docs.spring.io/osgi/docs/current/reference/html/app-deploy.html –