2016-09-13 18 views
10

Sự khác biệt giữa "nhóm biên dịch" và "biên dịch" là gì? Chỉ là một cách khác để xác định một phụ thuộc?build.gradle: biên dịch nhóm vs biên dịch, buildscript, classpath

Ex:

compile group: 'org.slf4j', name: 'slf4j-jcl', version: '1.7.21' 

Và tôi nghĩ rằng điều này cũng sẽ làm việc:

compile("org.slf4j:slf4j-jcl:1.7.21") 

Tại sao tôi có khai báo mavenCentral() lại và phụ thuộc khác chặn bên trong khối buildscript?

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE") 
    } 
} 

Từ quan điểm của tôi, khi bạn biên dịch nội dung, nó sẽ nằm trong lớp học của bạn?

+0

Hai phiên bản của 'compile' là đồng nghĩa và cư xử chính xác giống nhau. Khối 'dependencies' không nên * cần * để nằm trong khối' buildscript'. – Whymarrh

+0

trong khối 'buildscript' bạn chỉ định phụ thuộc cho kịch bản lệnh xây dựng gradle nó tự (Chúng được sử dụng khi biên dịch tệp build.gradle). Nó rất hữu ích khi bạn muốn một thư viện để xây dựng nhưng ứng dụng không cần nó. Ví dụ, bạn có thể muốn sử dụng một thư viện ssh để xây dựng nhưng ứng dụng của bạn không cần nó. – Aarjav

Trả lời

8

compile chỉ định phụ thuộc bên ngoài cho dự án bạn đang xây dựng. compile yêu cầu nhóm, tên và phiên bản. Đây có thể được chia nhỏ hoặc được chỉ định bằng cách sử dụng mẫu ngắn "nhóm: tên: phiên bản". thấy Grade Dependency Management Basics

Khối buildscript tuyên bố sự phụ thuộc của gradle bạn xây dựng bản thân trong khi bình thường phụ thuộc khối tuyên bố sự phụ thuộc của dự án bạn đang đi để xây dựng