設置: 在我們公司,我嘗試將基於Ant的Netbeans應用程序遷移到Maven。 我有一個基於Maven的Netbeans平臺應用程序和兩個包含Netbeans模塊的Maven Module POM項目。Maven Netbeans應用程序未找到ServiceProvider
|API (POM project)
|-APIModule
|-MyService.java
|Implementation (POM project)
|-ImplModule (dependency on APIModule)
|-MyServiceProvider.java (implements MyService)
|Application (Maven Netbeans Platform Application) (dependency on API and Implementation)
|-branding
|-netbeans-app (the application)
|-viewer
|-MyViewer.java (calls Lookup.getDefault().lookup(MyService.class)
API和實現使用<packaging>pom</packaging>
建成,並依賴使用
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mavenprojectapi</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
</dependencies>
這樣宣佈,我可以很容易地換出實現在API
部分服務,並建立是否有新UI我不想再堅持Netbeans平臺。
問題:在MyViewer中,我打電話給Lookup.getDefault().lookup(MyService.class)
。
但它沒有找到MyService的實現。
我知道@ServiceProvider
找到實現,如果它們被明確聲明(例如見here),但這不是我想要的。
問題:如何查找通過查找和ServiceProvider 定義的服務實現,這些實現是在其他模塊套件中定義的?
UPDATE:似乎傳遞依賴不會從Implementation項目加載。我可以做的是定義一個Netbeans聚合模塊,它對所有實現模塊都有明確的依賴關係,並將其聲明爲我的應用程序中的直接依賴項。這種方式傳遞性依賴被加載並找到了ServiceProviders。
雖然我在想要複製了基於Ant的項目中的「導入集羣」功能。在official NBM plugin documentation中描述了目標,並且爲單個模塊構建集羣,但我不知道訪問它們的方法。有任何想法嗎?
不幸的是,這並沒有擺脫這個問題。我編輯並更新了我的問題。 – sarathas