2013-10-17 61 views
2

我正在運行Apache servicemix 4.5.2。我想安裝一個功能,即一個jar文件。 我想要的功能是jtidy在servicemix中安裝功能

POM的依賴是:

<dependency> 
    <groupId>jtidy</groupId> 
    <artifactId>jtidy</artifactId> 
    <version>4aug2000r7-dev</version> 
</dependency> 

,倉庫在

http://repo1.maven.org/maven2/jtidy/jtidy/4aug2000r7-dev/jtidy-4aug2000r7-dev.jar

我知道命令特點:安裝Web控制檯,例如但jtidy是不是在我功能:列表。我也嘗試過使用addurl命令,但它不起作用。 012f(addurl mvn:http://repo1.maven.org/maven2/jtidy/jtidy/4aug2000r7-dev) Karaf文檔建議使用Features XML模式添加要素描述符,但不幸的是鏈接已損壞。

就知道我所做的是下載jtidy.jar並將其複製到我的deploy目錄。它有效,但我不認爲這是正確的方式。

不要任何人知道如何在正確的ServiceMix安裝jtidy?

謝謝!

回答

6

有安裝的功能和安裝一個JAR或OSGi包之間的差異。

功能在XML文件中定義。一個功能由多個bundle,configs ...組成,它們被安裝在一起。看看http://karaf.apache.org/manual/latest-2.3.x/users-guide/provisioning.html瞭解更多關於卡拉夫的功能。

在這種情況下,你想一個JAR安裝到容器中。您可以使用命令osgi:install執行此操作,然後使用指向JAR的URL(例如mvn:jtidy/jtidy/4aug2000r7-dev)。

然而,在你的情況下,有一個更大的複雜性。 jtidy本身不是一個OSGi包。添加必要的OSGi元數據的最簡單方法是使用wrap:協議自動將OSGi元數據添加到JAR。

所以,包裹東西 - 安裝了Apache ServiceMix的這個jtidy依賴,你可以使用

osgi:install wrap:mvn:jtidy/jtidy/4aug2000r7-dev
+0

謝謝您的回答。順便說一句,如果我想添加由我自己開發的本地環境(myJar.jar)的jar,那麼呢? – Luixv

+2

如果你使用Maven的發展,通常的解決辦法是建立工件,然後使用相同的網址類型的工件(MVN://)。但是,URL可以是任何你想要的東西,所以你也可以使用http:// ...或file://來指向工件。 – gertv

+0

謝謝(+1)! – Luixv