質問

AntからMavenに社内のフレームワークプロジェクトの1つを変換し終えたところです。 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の通常のプロパティ、依存関係管理、プラグインマネージメントエントリ。

消費モジュールでは、次のようなものがあります。

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

これはトップレベルのPOMであるため、すべてのサブモジュールがフレームワークライブラリにアクセスして、開発者を容易にします。

すべての依存ジャーファイルが消費プロジェクトによってダウンロードされるように、どうすればセットアップできますか?

役に立ちましたか?

解決

Frameworkプロジェクトは、各子供モジュール用に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> 代わりは。

他のヒント

framework あなたがそれを呼ぶようにポンはそれです parent マルチモジュールプロジェクトのPOM。

モジュールは互いに依存することができますが、この親POMに依存することはできません。これは、おそらく円形の依存性を引き起こしているものです。

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

例によるメイベン さらに情報を提供する多くのリソースの1つです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top