본문 바로가기

Build/Gradle

Gradle 기본

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