2012-02-16 27 views
5

Qua một số dự án, tôi có một số tài nguyên (cụ thể là tập lệnh di chuyển cơ sở dữ liệu Flyway) mà tôi muốn được chia sẻ.Có thể Maven 'nhập khẩu' phụ thuộc tài nguyên?

Có thể có các tài nguyên được chia sẻ này tồn tại dưới dạng tạo phẩm Maven hay không và trước khi xây dựng có Maven giải quyết sự phụ thuộc đó và giải nén nội dung của phần tạo tác thành /src/main/resources/? Nếu vậy, làm thế nào sẽ đi về điều này?

Trả lời

7

Nếu bạn đặt một số tệp trong /src/main/resources, chúng sẽ được đặt trên CLASSPATH trong tạo phẩm JAR đích. Điều này có nghĩa là nếu bạn phụ thuộc vào một tạo phẩm như vậy, bạn sẽ có quyền truy cập vào tất cả các tài nguyên, giống như bạn có quyền truy cập vào các lớp trong đó.

<dependency> 
    <groupId>com.example.foo</groupId> 
    <artifactId>my-resources</artifactId> 
    <version>0.1</version> 
</dependency> 

Nếu my-resources vật chứa một số tài nguyên trong /src/main/resources, bạn có thể truy cập chúng khi chạy giống như bạn (hoặc bất kỳ thư viện khác) có thể truy cập /src/main/resources nội dung từ các vật tương tự.

Lưu ý rằng thao tác này sẽ không hoạt động với /src/test/resources vì tài nguyên kiểm tra chỉ được đặt trên CLASSPATH trong quá trình thực hiện surefire hiện vật.

+0

Cảm ơn! Sẽ cùng một công việc cho '/ src/test/resources' nếu phạm vi phụ thuộc là' test'? –

+0

@Deejay: no. Ngoài ra, bạn không thể nhập các lớp từ '/ src/test/java', ngay cả khi được nhập khẩu bằng cách sử dụng' test' scope. –

+0

Bạn có thể chỉ cần đặt các tài nguyên trong 'src artitact's' src/main/resources'. – carlspring

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