2012-07-14 21 views
0

據我所知,apache karaf的dev:watch命令應該可以幫助開發osgi捆綁包,這樣我就不必每次手動更新捆綁包到該軟件包的源代碼...apache karaf dev:監視命令不起作用

我試過這個,只有一個簡單的包只包含一個Activator類。 我正在使用maven進行開發。

osgi:install mvn:my.groupId/my.artifactId 

然後我開始使用osgi:start <id of my bundle>

然後我開始監測此包using dev:watch --start <id of my bundle>

Karaf告訴我,捆綁:

import org.osgi.framework.BundleActivator; 
import org.osgi.framework.BundleContext; 

public class Activator implements BundleActivator { 

public void start(BundleContext context) { 
    System.out.println("Starting the bundle"); 
} 

public void stop(BundleContext context) { 
    System.out.println("Stopping the bundle"); 
} 
} 

我使用karaf命令安裝的軟件包它監視我的包。 好的。

然後,我想測試如果我更改了源代碼並重新構建了我的包,那麼包是否會自動更新。 因此,我更改了激活器類的System.out.println(),並使用mvn clean install構建了我的重建包。

不應該捆綁更新自己呢?當我看看karaf控制檯時,我發現沒有任何更改,直到我使用osgi手動更新該軟件包:更新(我想避免使用dev:watch)...我在這裏做錯了什麼?

回答

3

幾個小時後,我發現錯誤的根源。 即使包已經是一個快照版本,這是不夠的安裝使用osgi:install mvn:<groupID>/<artifactID>捆綁,但你必須在包URL中使用的<version>太:osgi:install mvn:<groupID>/<artifactID>/<version>,其中<version>對應於pom.xml中指定的版本標籤。它必須是像「1.0-SNAPSHOT」這樣的快照版本。

0

maven版本是SNAPSHOT嗎? dev:watch只適用於快照,因爲固定版本不會改變。

+0

嗨,我如何能配置明確?目標文件夾中生成的Jar被稱爲bla.blubb.1.0-SNAPSHOT.jar,所以我猜這是一個快照版本?! – Moonlit 2012-07-15 07:30:51

+0

是的,這聽起來像一個快照版本,所以它應該工作。你使用mvn install嗎?安裝將jar部署到本地maven倉庫中。這是必要的,因爲karaf只監視本地回購站而不是目標文件夾。你還應該檢查你是否使用maven repo的默認位置或者在karaf中配置你的特殊回購位置。 – 2012-07-15 21:18:20

+0

是的,我正在使用mvn安裝來構建包。 maven項目被放到C:/users/user/.m2/repository中,我也可以找到jar。之後,我使用「osgi:install 」安裝軟件包,並指示karaf使用「dev:watch 」監視軟件包。就這樣。在我更改後的捆綁項目中再次調用mvn clean update之後,捆綁應該立即自動更新(就像我會調用osgi:update一樣)是否正確?還是我缺少任何中間步驟? – Moonlit 2012-07-15 23:08:25

0

我碰到了同樣的問題。幾個小時後,我發現了另一個錯誤的根源。

我在Windows上工作,我有我的<localRepository>D:\m2repo</localRepository>裏面的settings.xml

Maven的是與確定的,但BundleWatcher沒有。 工作後更改爲D:/m2repo(不適用於unix風格的正斜槓)。