2009-05-22 13 views
1

私はかなり標準的なレイアウトをたどるさまざまなコンポーネントがあるマルチモジュールプロジェクトを持っています。たとえば:グループ化Mavenの依存関係が

 
     root (pom) 
      ... 
      module-NN (pom) 
      module-NN-launcher (jar) 
      module-NN-runtime (jar) 
      ... 

(多くのモジュール-NNのプロジェクトがある場合)

各* -launcherプロジェクトは、一般的なAPIを提供するフレームワークを起動する独自のAPIを使用しています。その後、* -runtimeプロジェクトがこのフレームワークにロードされ、「やる」ことができます。

物事が現在立っているように、私は、各* -launcher /のpom.xmlに定義されたランチャーの依存関係を持っています。同様に、* -runtime/pom.xmlに汎用APIリファレンスがあります。私は何かのようになり、プロジェクトの構造を更新することができます:

 
    root (pom) 
     launcher (pom) 
      ... 
      module-NN-launcher (jar) 
      ... 
     runtime (pom) 
      ... 
      module-NN-runtime (jar) 
      ... 
     applications (pom) 
      ... 
      module-NN (pom) 
      ... 

ランチャー/ランタイムのpom.xmlファイルに関連する依存関係を置くが、これは、プロジェクトのレイアウトはあまり直感的になります。

誰もが前に、この種の問題に直面していますか?類似のプロジェクト全体の詳細を複製することなく、意味のあるレイアウトを作成する際に、どのようなアドバイスを提供できますか?

答えて

0

私は約90%類似した何かをやりました。

は、「ランタイム・共通」と呼ばれるプロジェクトを作成することを検討してください。そのpom.xmlに、ランタイムに共通するすべてのランタイム依存性を追加します。モジュール-NN-ランタイム用のpom.xmlで

、この

<parent> 
     <groupId>FOO</groupId> 
     <artifactId>runtime-common</artifactId> 
     <version>1.0.0</version> 
    </parent> 

を追加するには、共通の実行時に追加ものは、実行時共通用の子プロジェクトに追加されます。これは、すべてのモジュールを構築するルートプロジェクトの機能には影響しません。

あなたはこのようなものになってしまいます:あなたが実際にあなたがそこにしたくない場合は、プロジェクトで、ランチャーとランタイム・コモンズを維持する必要はありません

ROOT (POM) 
    Launcher-COMMON (POM) 
    ... 
    Launcher-1 (Jar) 
    ... 
    Runtime-COMMON (POM) 
    Runtime-1 (Jar) 
    ...  
    Runtime-2 (Jar) 
    ... 

。その場合には、この

ROOT (POM) 
    COMMON (POM) 
    Runtime-COMMON (POM) 
     ...  
    Launcher-COMMON (POM) 
     ...  
    Launcher-1 (Jar) 
    ...  
    Runtime-1 (Jar) 
    ...  
    Runtime-2 (Jar) 
    ... 
ような何かを行います