2013-04-09 154 views
1

實際上,當我構建我的項目時,它將該包部署到正在運行的OSGI控制檯。現在該軟件包處於已安裝狀態,並顯示紅色警報,指出無法找到commons-net軟件包。在maven中添加嵌入依賴項

解決這個問題的一種方法是問題是明確將bundle安裝到正在運行的osgi框架本身。

另一種方式可能是向Maven添加Embeded-Dependency。但是這種方法不起作用。 我在Maven-build-plugin的指令標記中加入了Embeded-Dependency。它沒有顯示任何錯誤。

請讓我知道,如果有任何建議。

+1

請提供有關它是如何失敗的更多信息...「這種做法是行不通的」不幫忙在所有。 – 2013-04-09 09:07:11

回答

2

嵌入式依賴關係未顯示任何錯誤,因爲您可以將任何內容放入說明中。如果鍵值對未知,它將直接插入MANIFEST.MF中。嘗試編寫Embed-Dependency,這應該可以工作。

一個很好的例子可能是以下(我們如何爲自己創造了休眠束):

<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-bundle-plugin</artifactId> 
    <extensions>true</extensions> 
    <configuration> 
     <instructions> 
      <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
      <_exportcontents> 
       !org.hibernate.validator.*, 
       org.hibernate.*;-noimport:=true, 
      </_exportcontents> 
      <Import-Package> 
       javax.persistence*;version="1.1.0", 
       javax.naming*, 
       javax.sql, 
       javax.transaction*;version="1.1.0", 
       javax.xml.stream.*, 
       javax.xml.*, 
       org.slf4j, 
       org.w3c.dom, 
       org.xml.sax*, 
       antlr.*, 
       org.jboss.logging.*, 
       org.dom4j*, 
       *;resolution:=optional 
      </Import-Package> 
      <Embed-Dependency> 
       groupId=org.hibernate;artifactId=hibernate-core, 
       groupId=org.hibernate;artifactId=hibernate-entitymanager, 
       groupId=org.hibernate.common;artifactId=hibernate-commons-annotations 
      </Embed-Dependency> 
     </instructions> 
    </configuration> 
</plugin>