2017-04-25 8 views
0

3つのモジュール(api、dictionary、webapp)を含む "framework-ws"プロジェクトがあります。 このプロジェクトは、複数の他のWebサービスプロジェクトの親プロジェクトを使用しています。maven pom.xmlのどのスコープを使うか

たとえば、プロジェクト "core-ws"には、親に対して "framework-ws"があります。また、3つのモジュール(api、辞書、webapp)が含まれています。 これらのモジュールのそれぞれは、依存関係としてフレームワークを持っています。

  • コアWS-API =>フレームワークWS-API
  • コアWS-辞書=>フレームワークWS-辞書
  • コアWS-Webアプリケーション=>フレームワークWS-Webアプリケーション
  • (サブプロジェクト=>依存関係)

私は他の依存関係(例えば、lombok)をすべてのプロジェクト(フレームワーク+子プロジェクト)で使用しています。

この依存関係をどこに宣言する必要があるのか​​分かりません。ノースコープを持つ親プロジェクトでスコープなしの「提供」スコープを持つ親プロジェクトでは、各 子プロジェクトで

  1. 、および各 子プロジェクトで依存関係のない
  2. 別私が考えなかったソリューション

2番目の解決策は、各pom.xmlの依存関係を複製する必要がないため、より洗練されているようです。しかし、それがベストプラクティスかどうかはわかりません。

編集:ここにプロジェクトの構造の写真があります。あなたの親のポンポンで enter image description here

答えて

1

はあなたの子供に続いてhttps://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

を参照してください依存関係管理部を使用したバージョンは、一度親に指定されますつまり、あなたが、依存関係を使用しますが、バージョンを指定しませんPOMすべての子供のために。各モジュールに依存関係を含める必要があります。スコープの面では

<dependencies> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-io</artifactId> 
    </dependency> 
</dependencies> 

は、デフォルトのスコープは、あなたが通常使用するものですこれはコンパイルされ、このhttps://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scopeをお読みください。私はあなたの質問を読んでから範囲の意味について混乱していると思います。

+0

ありがとう、それは私の問題の一部を解決します。依存関係管理はまさに私がコードを複製しないために必要なものです。 "提供された"スコープが有用なときはまだ分かりません。多分私は自分のプロジェクトには必要ないかもしれません。私はこの範囲についての詳細情報を検索します。 – YLombardi

+0

何かに対してコンパイルしたいが、何か他のものを許可したい場合、通常はサーバが実装を「提供」する。明白な例はサーブレットAPIです。 –

関連する問題