レガシー プロジェクトを ant から maven に移行するタスクがあり、循環インポートに問題があります。私の問題は、ant が同じクラスを含む多くの jar をビルドすることです。
元々、ant プロジェクトには 1 つの src フォルダーがあり、そこにすべてのパッケージが含まれています。Maven の互換性のために、pom.xml を使用して src フォルダーを複数のモジュールに分割する必要があります (ガイドとマニュアルに記載されているように)。
速い例。
Foo.java
package myapp;
import my.domain.myapp.Bar;
...
Bar.java
import my.domain.myapp.Foo;
...
src/my/domain/myapp/foo/foo.java (foo.jar)
src/my/domain/myapp/bar/bar.java (bar.jar)
同じ親パッケージに配置された 2 つのパッケージがあり、コンパイルに問題はありません。Ant プロジェクトは、Java クラスをコンパイルし、パターンによってアーティファクトを生成するだけです。したがって、*.class を jar にコピーするだけでコンパイルされます。Mavenの場合、同じように見えなかったので、次のようにパッケージを分割する必要があると思います:
pom.xml (parent)
--foo
----src/main/java/my/domain/myapp/foo/foo.java
----pom.xml
--bar
----src/main/java/my/domain/myapp/bar/bar.java
----pom.xml
したがって、mavenでは、依存関係をjarとして別のjarに設定することしか知りません。私の場合、ビルドをロックする循環インポートがあります。bar.jar なしで foo.jar をビルドすることはできません。
Mavenには、依存関係をjarに設定する代わりに、コンパイルプロセスのクラスパス変数を指定するものがありますか? いくつかの回避策?
ベストプラクティスは大歓迎です。