私たちは社内フレームワークプロジェクトの1つをantからmavenに変換しました。 Mavenビルドは正常に動作し、問題なしでリポジトリにデプロイします。mavenフレームワークのトップレベルpomの設定方法
問題は、他のプロジェクトがフレームワークを消費しようとしたときに問題になることです。動作しません。ダウンロードされるのはトップレベルのフレームワークです。
いくつかの依存関係のエントリを1つ以上のさまざまなモジュールに追加しようとしましたが、どのモジュールを追加しても循環依存エラーが発生します。また、リポジトリマネージャの1つを上書きするためにモジュールといくつかの依存関係のない2番目のトップレベルpomファイルを作成しようとしました。これにより、いくつかの依存関係がダウンロードされますが、Mavenビルドはランダムな場所でハングします。 Windowsタスクマネージャに基づいて、それは無限ループのように見えます。したがって、2番目の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>
、その後、通常のプロパティ、依存関係の管理とpluginManagementエントリ:
私のフレームワークのポンポンファイルは、次のようになります。かかるモジュールで
私は、次があります。
<dependency>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<version>6.3</version>
<type>pom</type>
</dependency>
これはトップレベルのポンポンであるので、すべてのサブモジュールは、開発者にそれを容易にするためのフレームワークライブラリへのアクセス権を持っています。
どのようにすれば、依存するjarファイルがすべて私のプロジェクトでダウンロードされるように設定できますか?
はい、これは実現するための1つの方法ですが、私たちの既存のantビルドを変換するとき、皆は "フレームワーク"を含め、50個のjarファイルを常に利用できるようにすることに全員が慣れています。 – Jon
私は、子モジュール(「framework-all」などと呼ばれる)が他のすべての子モジュールの依存関係を宣言するように試みることができます。そうすれば、開発者はこの1つの子モジュールに依存関係を宣言することができ、他のものは推移的な依存関係として扱います。 – BenjaminLinus
私はこれにバリエーションを使用して終了しました。私はトップレベルのアグリゲーターポームを構築し、展開するために使用しました。 GAVはアプリケーションが使用するのと同じではありません。それから私は新しいフォルダに新しいpomを作成しました。これには、アプリケーション用の「正しい」GAVが含まれ、モジュールはなく、依存関係のみが含まれます。これまでのところ – Jon