사용자 도구

사이트 도구


gant:targets

Gant Targets

Target의 선언

  • 타겟(Gradle에서는 태스크의 역할)은 세가지 형태로 정의 할 수 있다.
    target ( name : target-name ) target-closure
     
    target ( name : target-name , description : target-description ) target-closure
     
    target ( target-name : target-description ) target-closure
  • target-description은 gant -p/-T 옵션에서 타겟의 설명으로 나오게 된다.
  • target-description이 없으면 도움말 타겟 리스트에서 제외된다.

target-closure

  • target-closure에서는 ant라는 이름의 AntBuilder 객체의 메소드 이름으로 Ant Task를 호출할 수 있다.
  • 그러나 ant 객체 없이 바로 호출도 가능하다.
    target ( flob : 'Some message or other.' ) {
      // 둘 다 가능
      ant.echo ( message : 'Some message.' )
      echo ( message : 'Some message.' )
    }

다른 타겟 호출

  • 타겟 이름으로 다른 타겟을 호출 할 수 있다.
    target ( adob : 'A target called adob.' ) {
      flob ( ) //flob 이라는 타겟 호출
      this['flob']() // 문자열로 flob 타겟 호출
    }
  • 다른 타겟에 의존할 수도 있다.
    target ( adob : 'A target called adob.' ) {
      depends ( flob ) // adob 타겟을 실행하면 그 전에 항상 flob 타겟 호출
      depends ( 'floc' ) // 문자열로 'floc'' 타겟에 의존하게
    }
    • 의존성은 여러개 설정할 수 있으며 설정 순서에 따라 실행한다. 위 예에서는 'flob', 'floc' 순서로 실행한다.

기본 타겟

  • gant 명령만 실행해도 되는 기본 타겟을 설정할 수 있다.
    setDefaultTarget ( aTarget )
  • 저 명령은 실제로는 다음으로 실행된다
    target ( 'default' : 'aTarget' ) { aTarget ( ) }

target-closure의 파라미터

  • target-closure에는 항상 타겟에 대한 정보가 Map으로 전달된다.
    target ( example : '' ) { println ( it.name ) ; println ( it.description ) }

동적 타겟 생성

build.gant는 그 자체가 스크립트이고 target도 메소드이므로 동적으로 타겟을 생성하는 것이 가능하다. 단, GString으로 target의 인자를 넘기는 것은 하지 말 것. GString의 늦은 초기화 특징 때문에 엉뚱한 값이 들어갈 수도 있다.

  • build.gant
    def names = ['a','b','c','d']
     
    names.each { name ->
        target(name: name + '_project', description: 'Description for ' + name) {
            echo(message: "project name : ${name}")
        }
    }
    target(allProject: 'run all projects') {
        names.each {
            depends(it) // 모든 name_project에 대해 의존성 걸기
        }
    }
  • gant -T
    $ gant -T
     a_project    Description for a
     allProject   run all projects
     b_project    Description for b
     c_project    Description for c
     d_project    Description for d
gant/targets.txt · 마지막으로 수정됨: 2012/10/22 16:55 저자 kwon37xi