2012-01-05 37 views

Trả lời

96
  • build - phụ thuộc mà chỉ là cần thiết bởi quá trình xây dựng
  • runtime - sự phụ thuộc đó là cần thiết để chạy các ứng dụng, nhưng không phải biên dịch nó ví dụ Triển khai JDBC cho nhà cung cấp cơ sở dữ liệu cụ thể. Điều này thường sẽ không cần thiết vào thời gian biên dịch vì mã chỉ phụ thuộc vào API JDBC, thay vì thực hiện cụ thể của nó
  • compile - sự phụ thuộc cần thiết ở cả thời gian biên dịch và thời gian chạy. Đây là trường hợp phổ biến nhất

Có một vài phạm vi phụ thuộc khác:

  • test - phụ thuộc mà chỉ là cần thiết bởi các cuộc thử nghiệm, ví dụ thư viện mocking/testing
  • provided - sự phụ thuộc cần thiết vào thời gian biên dịch nhưng không được đóng gói với ứng dụng (thường do nó được cung cấp bởi vùng chứa). Ví dụ: API Servlet
+1

Cảm ơn, Don, thông tin tuyệt vời, chỉ là một câu hỏi nhanh khác ... quy ước cho 'build' xuất hiện theo sau' "groupId: artifactId: kho lưu trữ hoặc phiên bản" ', có giống nhau cho thời gian chạy và biên dịch không? – raffian

+0

có, cùng một quy ước cho tất cả các phạm vi. Tôi không bao giờ sử dụng 'repository' - tôi thậm chí không biết nó tồn tại, vì vậy trong trường hợp của tôi, tôi chỉ định' groupId: artifactId: version' –

+0

Chúng tôi đang sử dụng Artifactory để lưu trữ tất cả các tạo tác của chúng tôi, vì vậy đó là lý do tôi đề cập đến nó. ..thanks một lần nữa! – raffian

1

Một vài grails lệnh giúp minh họa sự khác biệt là gì. Xem xét grails run-appgrails compile. grails compile là bước biên dịch và sẽ bao gồm các phụ thuộc biên dịch. grails run-app là bước chạy và sẽ bao gồm các phụ thuộc thời gian chạy. Xây dựng các phụ thuộc là bất cứ thứ gì mà bạn có thể cần để chạy bất kỳ lệnh nào trong số các lệnh này, ví dụ, một kịch bản tùy chỉnh móc nối vào một số sự kiện xây dựng.

Vì vậy, bạn sẽ chọn loại phù hợp nhất khi bạn cần chắc chắn phụ thuộc được bao gồm.

5

Có vẻ như 2 câu trả lời trước đây xung đột về sự khác biệt giữa biên dịch và xây dựng. Tôi tin rằng xây dựng là phạm vi bao gồm grails compilegrails run-app, trong khi biên dịch chỉ là trước đây.

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