2017-01-30 105 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 –