2010-12-27 37 views
12
<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
</dependency> 

Tôi sử dụng tính năng nhập phụ thuộc đó vào tệp pom.xml của dự án của tôi. Câu hỏi của tôi là tôi tuyên bố 2.5 là phiên bản. Tuy nhiên điều quan trọng là phải viết một phiên bản thấp hơn? Ví dụ tôi có nghĩa là nếu dự án của tôi sử dụng phiên bản 3.0 và tôi viết rằng 2.5 sẽ được cung cấp? (Tôi có nghĩa là chúng ta hãy chấp nhận rằng 2.5 là tốt và dự án của tôi hoạt động tốt, Nếu tôi không thay đổi bất cứ điều gì khác và chỉ cần thay đổi 2,5-2,0 nó gây ra một lỗi?)maven cung cấp phạm vi

Trả lời

6

Nó phụ thuộc.

Nói chung, nếu bạn đang mong đợi một phiên bản chính xác (ngay cả khi được cung cấp) thì đó là những gì bạn nên cung cấp.

Tuy nhiên, có những trường hợp khi bạn có thể cần phải phát triển các phiên bản một chút. Điều đó đang được nói - tôi sẽ tranh 2 điểm:

1) Có thể dự án của bạn mong đợi phiên bản thấp hơn và được cung cấp phiên bản cao hơn; miễn là phiên bản cao hơn không phải là phiên bản chính. Tôi khuyên bạn nên xem mô hình phiên bản nguồn mở tốt, chẳng hạn như Apache project.

2) Có thể là NOT ok để dự án của bạn trông đợi phiên bản cao hơn và nhận được phiên bản thấp hơn. Lý do chính là bạn không thể mong đợi những thứ có thể không có ở đó.

Tôi hy vọng điều này sẽ hữu ích.

+0

Cảm ơn. Tôi hiểu rằng nếu tôi không sử dụng một số phương pháp không có khả năng tương thích với các phiên bản thấp hơn thì OK. – kamaci

20

Giải pháp đúng là khai báo phiên bản api servlet chính xác được sử dụng trong vùng chứa cho trẻ vị thành niên.

Từ khóa là được cung cấp: bất kỳ phiên bản nào bạn chỉ định được sử dụng tại thời gian biên dịch và để thử nghiệm. Khi chạy, nó được giả định là được cung cấp bởi vùng chứa thời gian chạy của bạn, ví dụ: Cầu cảng.

Nếu thư viện thời gian thực khác với khai báo trong POM của bạn, bạn đang gặp sự cố. Cho dù bạn sẽ hoặc sẽ không gặp vấn đề là một câu hỏi về khả năng tương thích giữa các phiên bản.

API Servlet tương thích ngược, xem: Are the Java Servlet APIs backwards compatible?

+0

Cảm ơn, bạn đã mô tả nó tốt, tôi đang bỏ phiếu. – kamaci

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