セットアップ: 私たちの会社では、AntベースのNetbeansアプリケーションをMavenに移行しようとしています。 私はMavenベースのNetbeansプラットフォームアプリケーションと、Netbeansモジュールを含む2つのMavenモジュール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参照)、実装が見つかったことを知っていますが、それは私が望むものではありません。
質問:他のモジュールスイートで定義されているLookupおよびServiceProvider によって定義されたサービス実装を見つけるにはどうすればいいですか?
更新:推移依存性が実装プロジェクトから読み込まれていないようです。私ができることは、すべての実装モジュールに明示的な依存関係があるNetbeans集約モジュールを定義し、それを自分のアプリケーションに直接依存するものとして宣言することです。これにより、推移的な依存関係がロードされ、ServiceProvidersが検出されます。
What I が必要ですが、Antベースのプロジェクトでは "import cluster"機能が重複しています。 official NBM plugin documentationに記載されている目標があり、クラスタは単一のモジュール用に構築されていますが、アクセスする方法はわかりません。何か案は?
悲しいことに、これは問題を取り除かなかった。私は編集し、私の質問を更新しました。 – sarathas