- 그레이들 스크리트 파일과 기본 객체
- 초기화 스크립트 -> Gradle객체
- 처음 시작 되는 스크립트 (init.gradle)
- 사용자 정보, 초기 설정 값, 실행 환경 등
- 설정 스크립트 -> Settings객체
- 파일 구조(싱글, 멀티등)
- 빌드에 대한 설정 정보(settings.gradle)
- 빌드 스크립트 -> Project 객체
- 그레이들 기본 객체들을 이용해 초기화와 설정 스크립트의 내용 이용 가능
- 초기화 스크립트 -> Gradle객체
- 그레이들 구성요소들
- 그레이들 속성파일: (gradle.properties, Project폴더 하위에 있음)/ 빌드 환경 속성등 내용
- 환경변수: 시스템에 등록한 Gradle설치 정보
- 명령어 옵션: 빌드 수행시 명령어와 옵션 정보를 인수로 전달. (gradle -Pname=gradle hello)
- buildSrc: 빌드 수행 시 클래스 파일이나 플러그인(공통부분들) 을 저장하여 참조하는 디렉토리
- 그레이들 빌드 단계
- 명령어 해석/수행 & 그레이들 실행
- 명령어 해석(옵션 및 인수 확인)
- -> 디렉터리 확인(Home, Root...)
- -> 속성파일 확인
- -> 클래스 인스턴스 생성
- -> 실행모드 판단(데몬모드: 명령어 옵션 -daemon/ GUI 모드: -gui, CLI모드: 실행모드 옵션 지정 없을시)
- 스크립트 초기화 & 프로젝트 세팅 & 테스크 실행(묶어서 그레이들 생명주기)
- 스크립트 파일 확인 및 읽기 <스크립트 초기화>
- -> 멀티 or 싱글 프로젝트 판단
- -> 프로젝트 객체 생성
- -> 명령어 옵션 및 인수 설정
- -> 참조 중인 라이브러리 확인 <프로젝트 세팅>
- -> 테스크 객체 및 테스크 그래프 (프로젝트에서 빌드 수행에 필요한 테스크들)형성
- 테스크 추출 <테스크 실행>
- 테스크 실행
- 결과 출력
- 명령어 해석/수행 & 그레이들 실행
- 스크립트 파일
- 그루비 : 자바와 호환성이 좋음, JVM위에서 동작.
- def로 타입 없이 사용 가능
- 작은 따옴표:
- 클로저:
- 리스트와 맵:
- 스크립트 파일 구조
- 처리문
- 스크리브 블록
- repositories(저장소 설정)
- dependencies(의존 관계 설정)
- buildscript(빌드 스크립트 클래스 패스 설정)
- initscript(초기화 스크립트 설정)
- cofigurations(환경 구성 설정)
- allprojects(서브 프로젝트 포함 전체 프로젝트 설정)
- subprojects(서브 프로젝트 설정)
- artifacts(빌드 결과에 대한 설정)
- 변수
- 지역변수: 선언된 부분에서 영향력 있는 변수
- 시스템 속성: 시스템 관련 정보를 저장하는 변수
- 확장 속성: 도메인 객체 확장 용도로 사용되는 변수
- 프로젝트 속성: 프로젝트에서 사용되는 변수
- 속성값지정: 동일한 속성명으로 지정될 경우 로드 우선순위가 늦은 것에 대하여 지정
- 우선순위 1: 프로젝트 디렉터리의 gradleproperties 지정
- 우선순위 2: 홈 디렉터리의 gradle.properties 지정
- 우선순위 3: 환경변수 지정
- 우선순위 4: 명령어 옵션 지정 -D
- 우선순위 5: 명령어 옵션 지정 -P
- -> 프로젝트 속성은 빌드 스크립트 나머지는 모든 스크립트 파일에서 사용
- 그루비 : 자바와 호환성이 좋음, JVM위에서 동작.
// 1.시스템 속성변수
task hello<<{
println System.properties['message']
}
//방법 1: -D 또는 --system-prop
gradle -Dmessage=hello.hello
//방법 2: gradle.properties
systemProp.message=hello
// 2.확장번수
//지정
ext{
extPro1 = 'pro1'
extPro2 = 'pro2'
}
//사용방법
println '속성값 1: '+ext.extPro1
println '속성값 2: '+ext.extPro2
//3. 속성변수
//gradle.properties
msg = Hi, Gradle!
//build.gradle
task hello<<{
println msg
}
//4. 프로젝트 속성
// -P옵션 또는 -project-prop (프로젝트 속성 우선순위 있음)
'Build > Gradle' 카테고리의 다른 글
Gradle 도메인 객체 (0) | 2024.01.24 |
---|---|
Gradle 태스크 (0) | 2024.01.22 |