2013-07-16 38 views
6

Tôi đang sử dụng dependency:analyze để phát hiện sự cố phụ thuộc. Nhưng tôi đã tìm thấy một vấn đề với các phụ thuộc transitive bởi vì các plugin không giải quyết phụ thuộc này.Maven 2.1 phụ thuộc: phân tích. Phụ thuộc transitive: Sử dụng phụ thuộc undeclared tìm thấy

Khi tôi thực thi phụ thuộc mvn: cây, đầu ra cho biết phụ thuộc chuyển tiếp.

Dependencies

project A 
    dependency B 
project C 
    dependency A 

Outuput -> (dự án C - đường dẫn)/mvn clean install

[WARNING] Used undeclared dependencies found: 
    dependency B: compile 

Plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
      <id>analyze</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>analyze-only</goal> 
      </goals> 
      <configuration> 
       <failOnWarning>true</failOnWarning> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Tại sao plugin không phát hiện sự phụ thuộc transitive

+0

không thực sự đủ thông tin ở đây để trả lời câu hỏi của bạn. Bạn đã mong đợi đầu ra để nói gì? Bạn đã chạy phân tích dự án nào? –

+0

Tôi thực hiện "mvn clean install" trên Project C. Nếu tôi đặt tùy chọn failOnWarning thành false, cảnh báo sẽ biến mất và việc thực thi là OK. Tại sao plugin không phát hiện sự phụ thuộc transitive –

Trả lời

5

Phân tích phụ thuộc hoạt động như mong đợi.

Mã trong dự án C sử dụng các lớp từ dự án B nhưng không phụ thuộc trực tiếp vào dự án B. Nó chỉ biên dịch bởi vì nó phụ thuộc quá mức vào B thông qua dự án A. Thay đổi phụ thuộc của dự án A sẽ phá vỡ dự án C. Đây là những gì chúng tôi đang cố gắng để tránh

đây không phải là tốt, nếu mã sử dụng lớp từ B, cần trực tiếp phụ thuộc vào B.

+0

Tôi cần sự phụ thuộc của Dự án A vì chứa các thư viện và mã phổ biến –

+0

Điều đó cũng tốt, hãy C phụ thuộc vào A và B. –

+0

Không, tôi không nên làm điều này, và tôi cố gắng làm việc với phụ thuộc transitive. –