Bạn đang sai/nhập nhằng về provided
. Nó có nghĩa là, "jar này nên được biên dịch với địa phương, nhưng nó sẽ được cung cấp trên classpath bởi cái gì khác trong thời gian chạy, do đó, không bao gồm nó trong classpath cho tôi." Ví dụ, tất cả các thùng chứa web (ví dụ: tomcat) bao gồm các lọ cho các servlet. Bạn nên sử dụng provided
cho các lớp servlet để bạn có thể biên dịch mã cục bộ, nhưng bạn không muốn ghi đè lên các lớp servlet mà tomcat cung cấp cho bạn khi bạn triển khai nó.
system
có nghĩa là "Những phụ thuộc đang trên hệ thống của tôi và tôi muốn chỉ cho họ trực tiếp". Bạn muốn tránh điều này nếu bạn có thể, bởi vì một người khác trên một máy tính khác sẽ không nhất thiết phải có những phụ thuộc này.
Sự khác biệt giữa provided
là dễ dàng hơn để hiển thị:
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
Xem cách nó có mà <systemPath>
? Đó là sự khác biệt. Bạn không chỉ định đường dẫn với provided
, được cung cấp biết cách nhận phụ thuộc từ kho lưu trữ. system
chỉ nhận được từ hệ thống tệp của bạn.
Tôi chưa từng nghe nói đến import
. @JigarJoshi liên quan đến http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html mà nói
nhập khẩu (chỉ có sẵn trong Maven 2.0.9 hoặc mới hơn)
phạm vi này chỉ được sử dụng trên một sự phụ thuộc của loại pom trong phần <dependencyManagement>
. Nó chỉ ra rằng POM được chỉ định nên được thay thế bằng các phụ thuộc trong phần của POM. Vì chúng được thay thế, các phụ thuộc với một phạm vi nhập khẩu không thực sự tham gia vào việc hạn chế sự chuyển đổi của sự phụ thuộc.
tôi nghĩ này đang nói: "thực hiện tất cả các phụ thuộc dự án này đã và inline họ trong phần <dependencyManagement>
này." Ai đó sửa tôi nếu tôi sai.
Nguồn
2013-06-03 23:58:46
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html –
Đó là nơi tôi đọc từ, nhưng bằng cách nào đó tôi cảm thấy tôi không hiểu điều đó đúng cách, do đó câu hỏi về SO. Cảm ơn mặc dù! –
FYI, ví dụ thực tế về việc sử dụng 'cung cấp' xem Câu hỏi, [Bao gồm thư viện trong khi lập trình & biên dịch, nhưng loại trừ khỏi xây dựng, trong dự án dựa trên NetBeans Maven] (https://stackoverflow.com/q/32087445/642706) –