본문 바로가기

Build/Gradle

Gradle 도메인 객체

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