2013-05-22 36 views
61

Câu hỏi của tôi hơi phổ biến, nhưng nó cũng được liên kết với Gradle.Sự khác biệt giữa cấu hình biên dịch và thời gian chạy trong Gradle

Tại sao chúng tôi cần cấu hình biên dịch và thời gian chạy?

Khi biên dịch thứ gì đó, tôi cần tạo đồ để chuyển đổi các lớp java trong bytecode vì vậy tôi cần cấu hình biên dịch, nhưng tại sao cấu hình thời gian chạy cần thiết để chạy ứng dụng trong JVM?

Xin lỗi nếu nó có vẻ ngu ngốc, nhưng tôi không hiểu.

Trả lời

91

Trong trường hợp phổ biến nhất, các tạo tác cần thiết tại thời gian biên dịch là một tập con của những người cần thiết khi chạy. Ví dụ: giả sử chương trình có tên app sử dụng thư viện foo và thư viện foonội bộ sử dụng thư viện bar. Khi đó, chỉ cần foo để biên dịch app, nhưng cần foobar để chạy. Đây là lý do tại sao theo mặc định, mọi thứ bạn đặt trên cấu hình compile của Gradle cũng hiển thị trên cấu hình runtime của nó, nhưng ngược lại không đúng.

+10

Sự xấu hổ này không được đề cập rõ ràng trong http://www.gradle.org/docs/current/userguide/dependency_management.html. Họ sử dụng cả biên dịch và thời gian chạy mà không nêu rõ ý nghĩa của chúng ... – silasdavis

+2

@silasdavis Trong tài liệu giải thích sự khác biệt: http://www.gradle.org/docs/current/userguide/userguide_single.html#configurations trong 8.3. Các cấu hình phụ thuộc – angelcervera

+0

@angelcervera Ah vì vậy nó, 8. Cơ sở quản lý phụ thuộc, và 51. Quản lý phụ thuộc. Tôi có thể thấy lý do tại sao họ có hai phần, nhưng có lẽ nó sẽ được tốt đẹp nếu sau này tham chiếu trước đây. Tôi nghĩ rằng tôi đã đáp xuống 51 và dự kiến ​​sẽ cung cấp một tài khoản đầy đủ. – silasdavis

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