1. Project 객체
◍ Project객체: 프로젝트의 환경구성, 의존관계 , 태스크 등의 내용을 제어 및 참조
◍ build.gradle과 대응
◍ Project 객체의 생명주기
○ 빌드 수행을 위한 Settings객체 생성
○ settings.gradle 스크립트 파일이 있을 경우 Settings 객체 비교
○ 구성된 Settings 객체를 이용하여 Project객체의 계층 구조 생성
○ 멀티 프로젝트일 경우 부모 프로젝트로 부터 Project 객체 생성 후 자식 프로젝트의 Project생성
◍ Project 객체 구조
○ TaskContainer
◼ taskcontainer.print 매서드 이용해서 클래스 컴파일, war파일 압축, 단위 테스트 등 실행
◼ getbyname등 이용해 프로젝트 정보를 알 수 있음.
○ DependencyHandler
◼ 의존관계 관리
○ ArtifactHandler
◼ 프로젝트의 결과물 관리
○ RepositroyHandler
◼ 프로젝트 저장파일 관리
○ Gradle
○ ConfigurationContainer
◼ 프로젝트의 구성을 관리
◍ Project객체의 속성
○ version: 프로젝트나 결과물의 버전(설정 없을시 unspecified)
○ description: 프로젝트 설명
○ name: 프로젝트의 이름, 명칭
○ state : 프로젝트 빌드 상태(종류: NOT EXECUTED, EXECUTING, EXECUTED, FAILED)
○ status: 프로젝트 결과물의 상태(종류: NOT EXECUTED, EXECUTING, EXECUTED, FAILED)
○ path: 프로젝트 경로(경로 구분자 ':')
◍ Project객체의 API
○ project(path): 지정된 경로의 프로젝트에 대하여 설정(상대 경로로 지정 가능)
○ project(path, configureClosure): 지정된 경로의 프로젝트에 대하여 클로저를 사용하여 프로젝트 구성(상대 경로로 지정 가능)
○ absoluteProjectPath(path): 절대 경로 변환하여 프로젝트 확인
○ apply(closure): 플로그 인이나 스크립트를 적용
○ configure(object, configureClosure): 클로저를 통하여 설정된 상태를 이용하여 객체를 구성
○ subprojects(action): 해당 프로젝트의 하위 프로젝트 설정
○ task(name): 주어진 이름으로 태스크를 생성하고 프로젝트에 추가
○ afterEvaluate(action): 프로젝트가 평가된 직후 추가
○ beforeEvaluate(action): 프로젝트가 평가되기 바로 직전 추가.
2. Task 객체
◍ Task객체의 동작
○ Action 객체를 상성하여 구성
○ 내부적으로 execute() API 호출하여 실행
○ 예외 처리를 통한 빌드 수행 제어
◍ Task 객체의 속성
○ name: 태스크 이름(프로젝트 내에서 태스크를 고유하게 식별)
○ description: 태스크 설명
○ group: 태스크가 속한 그룹(태스크 목록을 사용자에게 표시 할 떄 관련 태스크를 그룹화 하는데 사용)
○ path: 태스크의 경로(태스크의 정규화된 이름으로, 콜론(:)으로 구분)
○ action: 태스크에 의해 실행되는 순서 지정(action 속성으로 Action객체에 지정후 지정된 순서 대로 실행)
○ dependsOn: 태스크의 의존관계 지정 및 표시
○ enabled: 태스크의 실행 여부 설정
○ finalizedBy: 해당 태스크 실행 후 최종 수행할 태스크 지정
○ inputs: 태스크 입력 정보
○ mustRunAfter: 태스크 실행 순서 제어(강제적)
○ shouldRunAfter: 태스크 실행 순서 제어(비강제적)
○ state: 태스크의 실행 상태(실행여부, 실패여부 등 태스크 실행 관련 정보 제공)
◍ Task 객체의 API
○ doFirst(action): 해당 태스크의 실행을 위한 Action 객체 리스트의 처음 부분에 위치하여 태스크가 실행될 때 먼저 처리.
○ doLast(action) 해당 태스크의 실행을 위한 Action객체 리스트의 맨 마지막 부분에 위치하여 실행
○ deleteAllAction(action): 해당 태스크와 Action객체 리스트의 맨 마지막 부분에 위치하여 실행.
○ leftShift(action): <<연산자를 사용하여 leftShift()호출. Action객체 리스트의 마지막 부분에 추가 시킴
○ Property(propertyName): 태스크에 지정된 속성의 값을 출력
○ setProperty(name, value): 태스크의 속성 설정
○ hasProperty(propertyName): 지정된 속성을 가졌는지를 확인
○ dependsOn(paths): 태스크에 의존관계
○ onlyIf(onlyIfSpec): 지정된 조건을 만족할 경우 태스크 실행
3. Gradle 객체
◍ Gradle 객체의 속성
○ gradle: Gradle객체 반환. 초기화 스크립트에서 Gradle속성과 메서드에 명시적으로 접근할때 사용)
○ gradleHomeDir: Gradle의 홈 디렉터리 경로
○ gradleUserHomeDir: 사용자의 홈 디렉터리 경로
○ gradleVersion: 현재 사용중인 Gradle 버전
○ includeBuilds: 포함된 빌드 관련 정보
○ plugins: Gradle 객체에 적용된 플러그인 컨테이너
○ rootProject: Root프로젝트 위치
○ startParameter: 빌드 수행 관련 파라미터 정보
○ TaskGraph: 태스크 그래프 정보 표시
◍ Gradle 객체의 API
○ addBuildListener(buildListner): BuildListener 추가. 빌드 실행 중 발생되는 이벤트 전달
○ addListener(listener): 지정된 리스터 추가. 지정된 인터페이스 구현 가능
○ removeListener(listener): 빌드로 부터 지정된 리스너 제거
○ addProjectEvaluationListener(listener): 프로젝트 평가 리스너. 프로젝트 평가 시 이벤트 전달.
○ afterProject(): 프로젝트 평가 후 바로 호출할 작업 추가
○ apply(): 플러그인 또는 스크립트 적용
○ beforeProject(): 프로젝트가 평가 되기 바로 전에 호출할 작업 추가
○ buildFinished(): 빌드가 완료 될때 호출할 작업 추가
○ projectsEvaluated(): 모든 프로젝트를 평가된 후 호출할 작업 추가
○ projectsLoaded(): 프로젝트가 빌드를 위해 로드된 후 호출할 작업 추가
○ settingsEvalated(): 프로젝트 관련 빌드 설정이 로드 및 평가될 때 호출할 작업 추가
○ useLogger(): Logger를 사용할 수 있도록 제공
4. Settings 객체
◍ Settings 객체
○ 설정 스크립트(settings.gradle)와 연관
○ 멀티 프로젝트 설정
○ 프로젝트 빌드 수행전 Settings 객체 먼저 생성
◍ Settings 객체의 속성
○ gradle: 현재 빌드를 위한 Gradle 객체
○ plugins: Settings객체에 적용된 플러그인 컨테이너
○ rootDir: 빌드의 루트 디렉터리. 루트 디렉터리는 루트 프로젝트의 프로젝트 디렉터리
○ rootProject: 빌드의 루트 프로젝트
○ settings: Serttings 객체 참조(자기 자신을 참조)
○ settingsDir: 빌드의 설정 디렉터리(설정 디렉터리는 설정 파일을 포함한 디렉터리)
○ startParameter: Gradle빌드를 수행할 때 사용된 명령어 인수.
◍ Settings 객체의 API
○ findProject(): 지정된 디렉터리 혹은 파일 경로와 일치하는 Project 객체 반환(일치하는 디렉터리 또는 파일 경로가 없을 시 null 값 반환)
○ Project(): findProject()와 동일하나 일치하는 값이 없을 시 에러 발생
○ Include(): 계층형 멀티 프로젝트 추가시 사용
○ IncludeFlat(): 단층형 멀티 프로젝트 추가시 사용
5. 기타 객체
◍ Script: Gradle의 특정 메서드를 추가하기 위해 사용. Gradle의 스크립트에서 Script객체의 인터페이스를 구현하여 메서드와 속성 사용
◍ SourceSet: SourceSet은 자바 소스 및 자원에 대하여 그룹을 형성하여 사용
◍ ExtensionAware: Runtime에 다른 객체와 함께 확장하여 사용. extension이라는 확장 속성을 저장하는 컨테이너 사용
◍ ExtraPropertiesExtension: ext로 정의된 확장 속성. has(), set(), get() 3ㄱ
'Build > Gradle' 카테고리의 다른 글
Gradle 태스크 (0) | 2024.01.22 |
---|---|
Gradle 기본 (0) | 2024.01.21 |