gradle.properties와 settings.gradle을 언제 사용합니까?


90

gradle 빌드에는 세 개의 파일이 있습니다.

  • build.gradle 빌드 구성 스크립트를 정의하는
  • gradle.properties
  • settings.gradle

질문

  • 차이점은 무엇입니까 settings.gradle&의gradle.properties ?
  • 설정에 넣어해야 할 때 settings.gradlegradle.properties?

답변:


85

settings.gradle

settings.gradle파일은 단지처럼 그루비 스크립트 build.gradle파일. 다중 프로젝트 빌드의 settings.gradle여러 build.gradle스크립트와 비교하여 각 빌드에서 하나의 스크립트 만 실행됩니다 . settings.gradle스크립트는 이전에 실행됩니다 build.gradle스크립트와도 전에 Project인스턴스가 만들어집니다. 따라서 Settings개체 에 대해 평가 됩니다. 이 Settings개체를 사용 하여 빌드에 하위 프로젝트를 추가하고 명령 줄 ( StartParameter) 에서 매개 변수를 수정 하고 Gradle개체에 액세스하여 수명주기 핸들러를 등록 할 수 있습니다 . 결과적으로 settings.gradle설정이 빌드와 관련이 있고 반드시 프로젝트와 관련이 없거나 가능한 하위 프로젝트가 포함 되기 전에 로직이 필요한 경우 사용 하십시오 .

gradle.properties

gradle.properties파일은 객체 Properties의 범위 Project(소위 '프로젝트 속성'이라고 함) 에 자동으로 포함되어 특별한 역할 만 받는 단순한 Java 파일입니다 . 문자열 값만 허용하는 간단한 키-값 저장소입니다 (따라서 목록이나 배열을 직접 분할해야 함). gradle.properties다음 위치 에 파일을 넣을 수 있습니다 .

  • 프로젝트 디렉토리에서 직접 (프로젝트 관련 값의 경우)
  • 사용자 홈 .gradle디렉토리 (사용자 또는 환경 관련 값의 경우)

62

다중 모듈 프로젝트에는 하나의 기본 모듈 과 여러 하위 모듈이 있습니다. 다음 레이아웃이 있습니다.

(root)
  +- settings.gradle       
  +- build.gradle          # optional (commonly present)
  +- gradle.properties     # optional
  +-- buildSrc/            # optional
  |     +- build.gradle    
  |     +-- src/...
  +-- my-gradle-stuff/     # optional
  |     +- utils.gradle    # optional
  +-- sub-a/
  |     +- build.gradle
  |     +- src/
  +-- sub-b/
        +- build.gradle
        +- src/

하위 모듈은 하위 폴더의 더 깊은 곳에있을 수도 있지만 settings.gradle의 코드를 수정하지 않으면 이름에 해당 폴더의 이름이 포함됩니다.

settings.gradle

settings.gradle의 주요 역할은 포함 된 모든 하위 모듈을 정의하고 모듈 트리의 디렉토리 루트를 표시하는 것이므로 settings.gradle다중 모듈 프로젝트에서 하나의 파일 만 가질 수 있습니다 .

rootProject.name = 'project-x'

include 'sub-a', 'sub-b'

설정 파일도 groovy로 작성되며 하위 모듈 조회를 사용자 정의 할 수 있습니다.

build.gradle

모듈 당 하나의 파일이 있으며이 모듈에 대한 빌드 로직이 포함되어 있습니다.

에서 build.gradle의 파일 메인 모듈 , 당신은 사용할 수 있습니다 allprojects {}또는 subprojects {}다른 모든 모듈에 대한 설정을 정의 할 수 있습니다.

build.gradle하위 모듈 의 파일에서 다음을 사용할 수 있습니다.compile project(':sub-a') 하나의 하위 모듈이 다른 하위 모듈에 종속되도록하는 데 .

gradle.properties

이것은 선택 사항이며 주 목적은 gradle 자체를 실행하는 데 사용할 시작 옵션을 제공하는 것입니다.

org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true

이러한 값은 file로 재정의 할 수 있으며 USER_HOME/.gradle/gradle.propertiesgradle 명령 줄 인수로 재정의 할 수 있습니다 . 또한 다음을 사용하여이 파일에서 빌드에 대한 환경 변수를 설정할 수 있습니다.systemProp. 접두사로 .

이 파일의 모든 속성은 모든 build.gradle에서 사용할 수 있으므로 일부 프로젝트는 종속성 버전 또는 릴리스 정보도 gradle.properties 파일의 남용 일 수 있습니다.

my-gradle-stuff / utils.gradle

(폴더 또는 파일의 모든 이름이 가능합니다.) 정의를 재사용하기 위해 추가 사용자 정의 gradle 파일을 정의하고 다음을 통해 다른 gradle 파일에 포함 할 수 있습니다.

apply from: "$rootDir/gradle/utils.gradle"

이것을 넣을 다른 장소는 src/gradle또는src/build/gradle

buildSrc / ...

이 폴더는 특별하며 그 자체로 별도의 gradle 프로젝트와 같습니다. 다른 작업을 수행하기 전에 빌드되며 다른 gradle 파일에서 사용할 수있는 기능을 제공 할 수 있습니다. 기술적 인 이유로이 폴더에 대한 참조에 대한 IDE 지원은 여러 build.gradle파일에서 별도의 위치로 공통 코드를 추출하는 다른 방법보다 훨씬 잘 작동 합니다.

플러그인을 작성하고 배포하는 대신 Java, groovy 또는 kotlin에서 복잡한 사용자 지정 빌드 로직을 정의 할 수 있습니다. 단위 테스트를 할 수 있으므로 사용자 지정 빌드 코드를 단위 테스트하는데도 유용합니다. 의 소스 폴더 구조는 buildSrc모든 java / groovy / kotlin 프로젝트와 같이 조정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.