Nhờ có liên kết hữu ích từ @petter, tôi muốn thêm tóm tắt.
Điều đó có nghĩa là Android Gradle build bắt đầu sử dụng java-library
plugin thay vì plugin java
trước đó. Plugin này giới thiệu khái niệm exposed API
với hai số configuration
để khai báo các phụ thuộc.
- api
nên được sử dụng để khai báo phụ thuộc mà được xuất khẩu bởi các API thư viện
Ví dụ, trong một trường hợp mà bạn đang xây dựng một Java (hoặc Android) được sử dụng bởi các ứng dụng khác. Nếu bạn sử dụng bất kỳ thư viện của bên thứ ba nào và bạn cũng muốn hiển thị API của nó cho người tiêu dùng của thư viện, bạn nên khai báo như thế này.
api 'commons-httpclient:commons-httpclient:3.1'
- thực hiện
nên được sử dụng để khai báo sự phụ thuộc đó là nội bộ để các thành phần .
Khi phát triển ứng dụng Android, mô-đun app
của chúng tôi là điểm kết thúc không cần để lộ bất kỳ bộ phận nào bên ngoài. implementation
nên được sử dụng.
implementation 'org.apache.commons:commons-lang3:3.5'
Trước compile
cấu hình hoạt động như cùng api
, lợi ích của implementation
là:
- phụ thuộc không rò rỉ ra classpath biên dịch của người tiêu dùng nữa, vì vậy bạn sẽ không bao giờ vô tình phụ thuộc vào một transitive sự phụ thuộc
- biên dịch nhanh hơn nhờ giảm kích thước đường dẫn lớp học
- ít được biên dịch lại khi imp lementation phụ thuộc thay đổi: người tiêu dùng sẽ không cần phải được biên dịch lại
- xuất bản sạch hơn: khi sử dụng kết hợp với các mới maven-xuất bản plugin, thư viện Java tạo ra file POM rằng
phân biệt chính xác giữa những gì là cần thiết để biên dịch chống lại các
Thư viện và những gì cần thiết để sử dụng thư viện khi chạy (trong các từ khác , không pha trộn những gì cần thiết để biên dịch thư viện và
những gì cần thiết để biên dịch thư viện).
Nguồn
2017-06-07 09:47:09