다중 프로젝트 gradle 빌드에서 누군가 “allprojects”섹션과 “subprojects”섹션의 차이점이 정확히 무엇인지 말해 줄 수 있습니까? 단지 상위 디렉토리? 누구든지 둘 다 사용합니까? 그렇다면 일반적으로 각 항목에 무엇이 들어가는 지 결정하는 일반적인 규칙이 있습니까?
관련 질문 : 두 구문의 차이점은 무엇입니까 (실제로 모든 프로젝트 및 하위 프로젝트에 해당) :
subprojects { ...
}
과
configure(subprojects) { ...
}
당신은 언제 다른 하나를 할 것입니까?
답변
다중 프로젝트 gradle 빌드에는 rootProject와 하위 프로젝트가 있습니다. 두 가지의 조합은 모두 프로젝트입니다. rootProject는 빌드가 시작되는 곳입니다. 일반적인 패턴은 rootProject에 코드가없고 하위 프로젝트는 Java 프로젝트입니다. 이 경우 Java 플러그인을 하위 프로젝트에만 적용합니다.
subprojects {
apply plugin: 'java'
}
이것은 하위 모듈을 빌드하는 maven 집계 pom 프로젝트와 동일합니다.
두 구문과 관련하여 정확히 동일한 작업을 수행합니다. 첫 번째는 더 좋아 보입니다.
답변
Ryan의 대답에 덧붙여,이 configure
방법은 개체의 사용자 지정 하위 집합을 구성하려는 경우 중요합니다. 예를 들어 configure([project(":foo"), project(":bar")]) { ... }
또는configure(tasks.matching { it.name.contains("foo") }) { ... }
.
사용시기 allprojects
와 subprojects
상황에 따라 다릅니다. 종종 둘 다 사용합니다. 예를 들어 Java 플러그인과 같은 코드 관련 플러그인은 일반적으로에 적용됩니다 subprojects
. 많은 빌드에서 루트 프로젝트에 코드가 포함되어 있지 않기 때문입니다. 반면 Eclipse 및 IDEA 플러그인은 일반적으로 allprojects
. 확실하지 않은 경우 예제 및 기타 빌드 및 / 또는 실험을 살펴보십시오. 일반적인 목표는 관련없는 구성을 피하는 것입니다. 그런 의미 에서 예상되는 결과를 제공하는 subprojects
것보다 낫습니다 allprojects
.