Giả sử tôi có hai phụ thuộc Maven được định nghĩa trong một dự án như dưới đây.Phụ thuộc Maven trong sự phụ thuộc với phạm vi khác nhau
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mycompany.library</groupId>
<artifactId>mylibrary</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
Sau đó, trong thư viện của tôi, tôi cũng có một phụ thuộc được định nghĩa như bên dưới.
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
Khi tôi đóng gói dự án, tôi không thấy xstream được đóng gói trong đó. Tôi nghĩ rằng phạm vi phụ thuộc xstream của dự án, 'test' là ghi đè phạm vi phụ thuộc xstream của mylibrary, 'compile'.
Trong trường hợp này, cách tốt nhất để bao gồm xstream cho toàn bộ dự án để submodule có thể có quyền truy cập vào nó khi được đóng gói trong dự án là gì?
Tôi đã đọc giải thích về trang web của Apache Maven về phụ thuộc Transitive, nhưng tôi đang cố gắng hiểu ý nghĩa của nó, và cũng để tìm hiểu cách thực hành tốt nhất trong tình huống này.
từ trang web Apache Maven: - biên dịch Đây là phạm vi mặc định, được sử dụng nếu không có quy định nào được chỉ định. Các phụ thuộc biên dịch có sẵn trong tất cả các classpath của một dự án. Hơn nữa, những phụ thuộc đó được truyền cho các dự án phụ thuộc. –
Có lẽ câu hỏi ban đầu của tôi đã gây nhầm lẫn vì tôi đã sử dụng 'submodule'. Vui lòng xem câu hỏi đã chỉnh sửa của tôi ở trên. –
Vâng, tôi đã tự hỏi hơn về phạm vi kiểm tra. – aperkins