다중 프로젝트 gradle 빌드에서 누군가 “allprojects”섹션과 “buildscript”섹션의 차이점이 무엇인지 말해 줄 수 있습니까? 모두가 repositories
하고 dependencies
작업을. 가 allprojects
내 프로젝트에 대해? 무엇에 대해 buildscript
?
buildscript {
repositories {
...
}
dependencies {
...
}
}
과
allprojects(subprojects) {
repositories {
...
}
dependencies {
...
}
}
답변
” buildscript
“설정 섹션은 gradle 자체를위한 것입니다 (즉, gradle이 빌드를 수행하는 방법에 대한 변경). 따라서이 섹션에는 일반적으로 Android Gradle 플러그인이 포함됩니다.
” allprojects
“섹션은 Gradle에서 빌드하는 모듈을위한 것입니다.
종종 리포지토리 섹션은 둘 다 jcenter에서 종속성을 얻거나 (또는 아마도 maven central) 둘 다 동일하기 때문에 둘 다 동일합니다. 그러나 “종속성”섹션은 다릅니다.
각 모듈에 대한 종속성은 고유하고 각 모듈 내의 “build.gradle”파일에 있으므로 “allprojects”에 대한 “종속성”섹션은 일반적으로 비어 있습니다. 그러나 모든 모듈이 동일한 종속성을 공유 한 경우 여기에 나열 될 수 있습니다.
답변
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에 위치)뿐만 아니라 다른 플러그인에서 핵심 객체 및 객체를 확장합니다.
Project API는
allprojects
현재 프로젝트와 그 아래의 모든 하위 프로젝트가 포함 된 목록을 반환 하는 속성 을 제공 합니다.allprojects
클로저로 전화 하면 클로저에 대한 설명이에 연결된 프로젝트에 위임됩니다allprojects
.