Tôi có hai mô-đun A và B. Actualy B là plugin cho A.
B phụ thuộc vào A trong thời gian biên dịch. Một KHÔNG phụ thuộc vào B. On A runtime Tôi muốn thêm B để classpath, vì vậy trong pom.xml Một của tôi thêm các phụ thuộc sauPhạm vi thời gian chạy Maven và phụ thuộc chu kỳ
pom.xml
<dependency>
<groupId>my_group</groupId>
<artifactId>my_Plugin</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
Maven quá trình thất bại với lỗi phụ thuộc cyclic
[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]
[LỖI]
Tại sao tác động phụ thuộc thời gian chạy thời gian biên dịch?
Có một cách tiếp cận tốt để sắp xếp bản dựng của bạn cho loại dự án này. Nếu bạn cấu trúc lại mã được chia sẻ thành một mô đun khác (C), dự án B sẽ không còn cần phải phụ thuộc vào A tại thời gian biên dịch - A và B có thể phụ thuộc vào C. Sau đó, không có vấn đề gì để có A phụ thuộc vào B trong thời gian chạy. Một cách hay để nghĩ về điều này là xem xét việc viết một thư viện - một loạt các mã có thể chia sẻ - và một ứng dụng, đó là một tập hợp các thư viện được lắp ráp. Một dự án ứng dụng không thực sự cần chứa bất kỳ mã nào cả. – Conan