2017-06-13 12 views
1

セットアップ: 私たちの会社では、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に記載されている目標があり、クラスタは単一のモジュール用に構築されていますが、アクセスする方法はわかりません。何か案は?

答えて

0

実装モジュールのモジュールタイプをeagerに変更します。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>nbm-maven-plugin</artifactId> 
    ... 
    <configuration> 
     <moduleType>eager</moduleType> 
     ... 
    </configuration> 
</plugin> 
+0

悲しいことに、これは問題を取り除かなかった。私は編集し、私の質問を更新しました。 – sarathas

関連する問題