0

社内フレームワーク プロジェクトの 1 つを ant から maven に変換し終えたところです。Maven ビルドは正常に実行され、問題なくリポジトリにデプロイされます。

問題は、他のプロジェクトがフレームワークを使用しようとすると、機能しないことです。ダウンロードされるのは、最上位のフレームワーク pom だけです。

さまざまなモジュールの 1 つまたは複数にいくつかの依存関係エントリを追加しようとしましたが、どれを追加しても循環依存関係エラーが発生します。また、モジュールがなく、いくつかの依存関係を持つ 2 番目のトップ レベルの pom ファイルを作成して、リポジトリ マネージャーのファイルを上書きしようとしました。これにより、一部の依存関係がダウンロードされますが、maven ビルドはランダムな場所でハングします。Windowsタスクマネージャーに基づいて、無限ループにあるように見えます。したがって、2番目のpomファイルは答えではないようです(または間違っています)。

私のフレームワーク pom ファイルは次のようになります。

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <packaging>pom</packaging>
  <name>SFP framework</name>
  <version>6.3</version>

  <modules>
.... 50+ modules here
  </modules>

次に、最上位の pom の通常のプロパティ、依存関係管理、および pluginManagement エントリ。

消費モジュールには、次のものがあります。

<dependency>
  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <version>6.3</version>
  <type>pom</type>
</dependency>

これは最上位の pom にあるため、すべてのサブモジュールがフレームワーク ライブラリにアクセスして、開発者にとってより簡単になります。

依存するすべてのjarファイルが消費プロジェクトによってダウンロードされるように設定するにはどうすればよいですか?

4

2 に答える 2

2

フレームワーク プロジェクトは、子モジュールごとに 1 つずつ、いくつかの jar アーティファクトを生成しますが、親プロジェクトの jar アーティファクトは生成しないようです。したがって、親プロジェクトの pom への依存関係を宣言することは、やりたいことではありません。代わりに、フレームワーク プロジェクトの子モジュールごとに依存関係を宣言する必要があります。

私は、いくつかのモジュール(それぞれがjarアーティファクトを生成する)を含む「ツールキット」プロジェクトを持っている同様のセットアップを持っています。次に、他のプロジェクトで、使用する必要のあるモジュールへの依存関係を宣言します。ただし、「ツールキット」親プロジェクトの pom ファイルへの依存関係は宣言しません。代わりに、子モジュールの jar アーティファクトへの依存関係を宣言するだけです。

<dependency>
  <groupId>com.mycompany.toolkits</groupId>
  <artifactId>file-utils</artifactId>
  <version>1.0.0</version>
</dependency>

私の依存関係宣言は、私の子モジュールの 1 つを指しており、<type>pom</type>あなたのように宣言していないことに注意してください。本当に明示的にしたい場合は、<type>jar</type>代わりに宣言できます。

于 2012-01-18T17:19:21.327 に答える
-1

frameworkあなたが呼ぶparentポンは、マルチモジュールプロジェクトのポンです。

モジュールは相互に依存できますが、この親 pom に依存することはできません。これが、循環依存を引き起こしている可能性があります。

モジュールを再確認し、どのモジュールがどのモジュールに依存しているかを特定し、依存関係を適切に指定する必要があります。また、これらの依存関係は通常、jar依存関係 (ソースとリソースを含むパッケージ) です。

Maven By Exampleは、詳細情報を提供する利用可能な多くのリソースの 1 つです。

于 2012-01-13T05:12:01.437 に答える