2014-11-11 16 views
12

Tôi muốn sử dụng một thư viện mà có sự phụ thuộc như sau:Phạm vi tìm kiếm chú giải tìm kiếm của Maven chính xác là gì?

<dependency> 
    <groupId>com.google.code.findbugs</groupId> 
    <artifactId>annotations</artifactId> 
    <version>2.0.3</version> 
</dependency> 

Tôi đọc mà FindBugs là để phân tích tĩnh của mã Java, vì vậy tôi mặc dù nó không phải là cần thiết để đưa vào ứng dụng. Có an toàn khi loại trừ bình với <scope>provided</scope> hoặc với <exclusion>...</exclusion>?

Một lý do để loại trừ nó là có chính sách công ty đối với giấy phép GPL (L).

+0

Bạn đang nói rằng thư viện bạn muốn sử dụng kéo Findbugs như là một phụ thuộc transitive? Ngoài ra - bạn có thể làm rõ ý của bạn bằng cách 'an toàn' không? – user944849

+0

@ user944849 Có, findbugs trở thành một phụ thuộc transitive trong dự án của tôi. Với an toàn tôi có nghĩa là thư viện nên làm việc và in không có lỗi về các lớp bị thiếu. – holmis83

Trả lời

2

Về mặt lý thuyết, nó phải hoàn toàn an toàn (như được định nghĩa trong bình luận làm rõ của OP) để loại trừ phụ thuộc giao thức Findbugs. Nếu được sử dụng đúng, Findbugs chỉ nên được sử dụng khi xây dựng thư viện, không sử dụng nó. Có thể ai đó đã quên thêm <scope>test</scope> vào phụ thuộc Findbugs.

Vì vậy, hãy tiếp tục và thử loại trừ. Chạy ứng dụng. Bạn có gặp lỗi classpath, chức năng ứng dụng liên quan đến thư viện không hoạt động hoặc xem thư trong nhật ký có vẻ là do không có Findbugs không? Nếu câu trả lời là có, cá nhân tôi sẽ suy nghĩ lại bằng cách sử dụng thư viện cụ thể này trong đơn của tôi, và sẽ cố gắng tìm một giải pháp thay thế.

Ngoài ra, xin chúc mừng bạn đã thực hiện kiểm tra lớp học trước! Như một thực hành chung, bạn nên làm những gì bạn đã làm mỗi khi bạn đưa một thư viện vào ứng dụng của mình: thêm thư viện, sau đó kiểm tra những phụ thuộc transitive nào khác mang lại, và thực hiện dọn dẹp classpath cần thiết ngay từ đầu . Khi tôi làm điều này tôi thấy nó làm cho các phiên gỡ lỗi của tôi ngắn hơn nhiều.

+5

Lưu ý cho bất kỳ ai khác đến cùng, KHÔNG AN TOÀN để loại trừ thư viện bằng cách bỏ qua nó khỏi POM. Nó cần phải ở đó, nhưng nó phải có 'scope = provided'. Tôi đọc câu trả lời này quá nhanh, loại trừ nó khỏi POM hoàn toàn, và sau đó đã có vấn đề. –

15

Có, bạn có thể loại trừ an toàn thư viện này. Nó chỉ chứa các chú thích không cần phải có mặt khi chạy. Hãy cẩn thận để họ có sẵn cho các phân tích FindBugs, mặc dù.

Lưu ý rằng bạn cũng nên liệt kê jsr305.jar, như thế này:

<dependency> 
    <groupId>com.google.code.findbugs</groupId> 
    <artifactId>annotations</artifactId> 
    <version>3.0.2</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.google.code.findbugs</groupId> 
    <artifactId>jsr305</artifactId> 
    <version>3.0.2</version> 
    <scope>provided</scope> 
</dependency> 

Cả hai lọ được yêu cầu để làm cho các chú thích làm việc.

Kiểm tra most recent findbugs version ở Trung tâm Maven.

FindBugs được cung cấp theo LGPL, vì vậy sẽ không có bất kỳ sự cố nào đối với công ty của bạn. Ngoài ra, bạn chỉ đơn thuần là sử dụng FindBugs; bạn không phát triển thứ gì đó có nguồn gốc từ FindBugs.

Các vấn đề liên quan