9

私は2つのモジュールAとBを持っています.実際にはBはAへのプラグインです.Bは
コンパイル時にAに依存します. A は B に依存しません。実行時に B をクラスパスに追加したいので、A の pom.xml に次の依存関係を追加します。

pom.xml

    <dependency>
        <groupId>my_group</groupId>
        <artifactId>my_Plugin</artifactId>
        <version>${project.version}</version>
        <scope>runtime</scope>
    </dependency> 

Maven プロセスが循環依存エラーで失敗する

[ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='A'}' and 'Vertex{label='B'}' introduces to cycle in the graph B-->A-->B -> [Help 1]

[エラー]

ランタイムの依存関係がコンパイル時間に影響するのはなぜですか?

4

1 に答える 1

1

コナンが提案したように、可能であれば共通コードを別のモジュールに抽出して、循環性を解決してください。通常、このような場合、共通のインターフェイスとコア クラスを別のモジュールに抽出し、そのモジュールを両方のモジュールによって拡張すると、循環依存が発生します。次に、最初は循環状態にあったモジュールへの直接の依存関係を削除します。これを解決するのが非常に難しい場合もありますが、コードをモジュール化すると、簡単に再利用できるようにコードをリファクタリングする方法を理解するのに役立ちます。

于 2012-07-04T09:39:06.777 に答える