build.gradle에서 빌드 스크립트와 모든 프로젝트의 차이점은 무엇입니까?


135

다중 프로젝트 gradle 빌드에서 누군가 "allprojects"섹션과 "buildscript"섹션의 차이점이 무엇인지 말해 줄 수 있습니까? 모두가 repositories하고 dependencies작업을. 가 allprojects내 프로젝트에 대해? 무엇에 대해 buildscript?

buildscript {  
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

allprojects(subprojects) { 
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

답변:


137

" buildscript"설정 섹션은 gradle 자체를위한 것입니다 (즉, gradle이 빌드를 수행하는 방법에 대한 변경). 따라서이 섹션에는 일반적으로 Android Gradle 플러그인이 포함됩니다.

" allprojects"섹션은 Gradle에서 빌드하는 모듈을위한 것입니다.

종종 리포지토리 섹션은 둘 다 jcenter에서 종속성을 얻거나 (또는 ​​아마도 maven central) 둘 다 동일하기 때문에 둘 다 동일합니다. 그러나 "종속성"섹션은 다릅니다.

각 모듈에 대한 종속성은 고유하고 각 모듈 내의 "build.gradle"파일에 있으므로 "allprojects"에 대한 "종속성"섹션은 일반적으로 비어 있습니다. 그러나 모든 모듈이 동일한 종속성을 공유 한 경우 여기에 나열 될 수 있습니다.


gradle 버전을 지정해야합니까?
IgorGanapolsky 17 년

user : 6998684 gradle 버전은 전체 프로젝트에 적용되며 약간 숨겨진 파일로 선언됩니다. "./gradle/wrapper/gradle-wrapper.properties"를 살펴보십시오.
AndroidGuy

22

TL; DR : buildscript플러그인 찾기, allprojects모든 프로젝트에 적용


https://docs.gradle.org/current/userguide/userguide_single.html#applyPluginBuildscript 는 말합니다

외부 jar 파일로 공개 된 이진 플러그인은 빌드 스크립트 클래스 경로에 플러그인을 추가 한 후 플러그인을 적용하여 프로젝트에 추가 할 수 있습니다.

당신이 필요 그래서 buildscript, 플러그인을 찾을 수 Gradle을위한

Gradle의 핵심은 의도적으로 실제 자동화를 위해 거의 제공하지 않습니다. Java 코드 컴파일 기능과 같은 유용한 기능은 모두 플러그인에 의해 추가됩니다. 플러그인은 새로운 플러그인 (예 : JavaCompile), 도메인 객체 (예 : SourceSet), 규칙 (예 : Java 소스는 ​​src / main / java에 위치)뿐만 아니라 다른 플러그인에서 핵심 객체 및 객체를 확장합니다.

우려allprojects :

Project API는 allprojects현재 프로젝트와 그 아래의 모든 하위 프로젝트가 포함 된 목록을 반환 하는 속성 을 제공 합니다. allprojects클로저로 전화 하면 클로저에 대한 설명이에 연결된 프로젝트에 위임됩니다 allprojects.


나에게, 안드로이드 생태계의 초보자로서 이것은 아무것도 의미하지 않습니다. 의존성을 어디에 두어야합니까? 그 "빌드 스크립트"를 삭제할 수 있습니까?
마틴 버거

@MartinBerger : 위의 디렉토리가 build.gradle아닌 모듈에 의존성을 두십시오. build.gradle이 질문은
serv-inc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.