Tôi có một dự án Maven lớn với nhiều mô-đun và nhiều pom.xml
tệp. Dự án đã thay đổi và tôi nghi ngờ pom chứa một số phụ thuộc không cần thiết. Có một lệnh loại bỏ bất kỳ phụ thuộc không sử dụng từ một pom?
Tôi có một dự án Maven lớn với nhiều mô-đun và nhiều pom.xml
tệp. Dự án đã thay đổi và tôi nghi ngờ pom chứa một số phụ thuộc không cần thiết. Có một lệnh loại bỏ bất kỳ phụ thuộc không sử dụng từ một pom?
Câu trả lời:
Các Maven phụ thuộc Plugin sẽ giúp đỡ, đặc biệt là các dependency:analyze
mục tiêu:
dependency:analyze
phân tích các phụ thuộc của dự án này và xác định đó là: được sử dụng và khai báo; sử dụng và không khai báo; không sử dụng và khai báo.
Một điều khác có thể giúp thực hiện một số dọn dẹp là báo cáo Sự hội tụ phụ thuộc từ Plugin Báo cáo thông tin dự án Maven .
ignoreNonCompile
tùy chọn có thể được đặt thành đúng.
Bạn có thể dùng dependency:analyze -DignoreNonCompile
Điều này sẽ in một danh sách các phụ thuộc được khai báo chưa sử dụng và chưa sử dụng (trong khi bỏ qua runtime
/ provided
/ test
/ system
phạm vi để phân tích phụ thuộc không sử dụng.)
Hãy cẩn thận trong khi sử dụng, một số thư viện được sử dụng runtime
được coi là không sử dụng!
Như những người khác đã nói, bạn có thể sử dụng phần phụ thuộc: phân tích mục tiêu để tìm ra phần phụ thuộc nào được sử dụng và khai báo, sử dụng và không khai báo, hoặc không sử dụng và khai báo. Bạn cũng có thể thấy sự phụ thuộc: phân tích-dep-mgt hữu ích để tìm kiếm sự không phù hợp trong phần Quản lý phụ thuộc của bạn.
Bạn chỉ có thể xóa các phụ thuộc trực tiếp không mong muốn khỏi POM của mình, nhưng nếu chúng được giới thiệu bởi các lọ của bên thứ ba, bạn có thể sử dụng các <exclusions>
thẻ trong phần phụ thuộc để loại trừ các lọ của bên thứ ba (xem phần có tiêu đề Loại trừ phụ thuộc để biết chi tiết và thảo luận) . Dưới đây là một ví dụ không bao gồm đăng nhập chung từ phụ thuộc Spring:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Bạn đã xem Plugin phụ thuộc Maven chưa? Điều đó sẽ không xóa công cụ cho bạn nhưng có các công cụ cho phép bạn tự phân tích. Tôi đang nghĩ đặc biệt về
mvn dependency:tree
Tôi đã có loại vấn đề tương tự và quyết định viết một kịch bản loại bỏ sự phụ thuộc cho tôi. Sử dụng điều đó tôi đã nhận được hơn một nửa số phụ thuộc khá dễ dàng.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
. Nó chỉ cố gắng loại bỏ mọi phụ thuộc và kiểm tra nếu mvn install
hoạt động.