사용자 도구

사이트 도구


gant:tasks

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gant:tasks [2012/10/22 15:12]
kwon37xi [ant-contrib]
gant:tasks [2013/12/12 13:35] (현재)
kwon37xi [SSH 관련 보안]
줄 4: 줄 4:
 기본 Ant 태스크에 공통 옵션을 적용해두고 호출할 수 있는 속임수 기법이 있다. Ant 태스크와 동일한 이름으로 함수를 만들고 거기서 ''ant.태스크이름''으로 명시적으로 Ant 태스크를 호출하면서 기본값을 지정해주면 된다. ''exec'' 참조. 기본 Ant 태스크에 공통 옵션을 적용해두고 호출할 수 있는 속임수 기법이 있다. Ant 태스크와 동일한 이름으로 함수를 만들고 거기서 ''ant.태스크이름''으로 명시적으로 Ant 태스크를 호출하면서 기본값을 지정해주면 된다. ''exec'' 참조.
  
 +===== body에 값 넣기 =====
 +Ant 태스크 중에는 XML Attribute가 아닌 ''body''에 값을 넣도록 처리하는 경우가 있다. 이 때 이것을 gant로 변경할 때는, 태스크 호출 맨 마지막에 바디의 내용을 문자열로 넣어주면 된다.
 +<code xml>
 +<echo level="error">
 +이런 저런 메시지들을
 +출력해 봅시다!
 +</echo>
 +</code>
 +변환하면
 +<code groovy>
 +ant.echo(level: 'error', """이런 저런 메시지들을
 +출력해 봅시다!""")
 +</code>
 +
 +===== taskname =====
 +Ant에서 표준출력으로 내보낼 때 ''[echo] blah.. blah..'' 처럼 맨 앞에 태스크 이름이 나온다. ''taskname'' 속성을 통해 이를 조정할 수 있다.
 +<code groovy>
 +ant.echo(message: 'Hello World', taskname: 'echo:hello')
 +</code>
 +
 +결과는..
 +
 +<code>
 +[echo:hello] Hello World
 +</code>
  
 ===== TaskDef ===== ===== TaskDef =====
   * 기본이 아닌 외부 태스크 정의 [[http://ant.apache.org/manual/Tasks/taskdef.html|Ant taskdef]]   * 기본이 아닌 외부 태스크 정의 [[http://ant.apache.org/manual/Tasks/taskdef.html|Ant taskdef]]
 +  * [[http://ant.apache.org/manual/develop.html|Writing Your Own Task]]
 +  * [[gant:antlib|Gant Ant Libraries]]
 +
 +==== 클래스 이름 기반 taskdef ====
 +groovyc 태스크를 등록하는 것으로 알아본다. ''classpath'' 혹은 ''classpathref''로 해당 태스크가 속한 라이브러리의 클래스패스를 지정할 수 있다.
 +
 +<code groovy>
 +
 +taskdef(name: 'groovyc', classname: 'org.codehaus.groovy.ant.Groovyc')
 +
 +target(compile: 'Compile Groovy sources') {
 +    File dest = new File('classes')
 +    dest.mkdirs()
 +    File lib = new File('lib')
 +    lib.mkdirs()
 +
 +    groovyc(srcdir: 'src', destdir: 'classes') {
 +        classpath {
 +            fileset(dir: 'lib') {
 +                include(name: '*.jar')
 +            }
 +            pathelement(path: 'classes')
 +        }
 +    }
 +}
 +</code>
 +
  
 ===== input ===== ===== input =====
줄 65: 줄 117:
   * 실행시 ''com.jcraft.jsch.JSchException: reject HostKey:'' 오류가 발생한다면 ''trust: true'' 옵션을 지정한다.   * 실행시 ''com.jcraft.jsch.JSchException: reject HostKey:'' 오류가 발생한다면 ''trust: true'' 옵션을 지정한다.
   * ''ant.sshexec''로 명시적으로 ant 를 지정해야만 작동한다.   * ''ant.sshexec''로 명시적으로 ant 를 지정해야만 작동한다.
 +  * 위에 설명한 ''taskname'' 속성을 통해 접속중인 호스트명을 출력해주면 좋다.
  
 ==== 명령 사용자명/비밀번호 직접 지정방식 ==== ==== 명령 사용자명/비밀번호 직접 지정방식 ====
줄 152: 줄 205:
  
 ===== SSH 관련 보안 ===== ===== SSH 관련 보안 =====
-  * ''sshexec''와 ''scp''에 사용자명과 비밀번호 ''passphrase''를 직접 넣어 두는 것은 보안상 좋지 않다.+  * ''sshexec''와 ''scp'' 사용시 빌드 파일에 사용자명과 비밀번호''passphrase'' 등을 직접 넣어 두는 것은 보안상 좋지 않다.
   * 두가지 방법으로 해결한다.   * 두가지 방법으로 해결한다.
-    * 위에서 설명한 ''input'' 태스크를 사용하여 프라퍼티로 만든 뒤에, 사용자명, 비밀번호 등은 Ant 프라퍼티로 전달하는 것이 좋다. - 제일 좋다. +    * 위에서 설명한 ''input'' 태스크를 사용하여 프라퍼티로 만든 뒤에, 사용자명, 비밀번호 등은 실행시 입력 받아서 Ant 프라퍼티로 전달하는 것이 좋다. - 제일 좋다. 
-    * ''gant -D username=사용자명 -D password=비밀번호'' 형태로 명령행에서 Ant 프라퍼티를 입력받고, 이 값을 사용한다. - 다른 사용자가 ''ps'' 명령으로 명령행 옵션을 보는 것이 가능하다.+    * ''gant -D username=사용자명 -D password=비밀번호'' 형태로 명령행에서 Ant 프라퍼티를 입력받고, 이 값을 사용한다. - 다른 사용자가 ''ps''나 ''history'' 명령으로 명령행 옵션을 보는 것이 가능하다.
  
 <code groovy> <code groovy>
줄 175: 줄 228:
 </code> </code>
  
-===== ant-contrib ===== +
-  * [[http://ant-contrib.sourceforge.net/|ant-contrib]], [[http://sourceforge.net/projects/ant-contrib/files/ant-contrib/|download ant-contrib]] +
-  * [[http://ant-contrib.sourceforge.net/tasks/tasks/index.html|ant-contrib tasks]] +
-  * 설치. 파일을 다운로드 하여 Gant가 인지하는 라이브러리 디렉토리에 복사한다.<code groovy> +
-// 태스크들을 동록한다. +
-taskdef(resource: "net/sf/antcontrib/antlib.xml"+
-</code>+
gant/tasks.1350886322.txt.gz · 마지막으로 수정됨: 2012/10/22 15:12 저자 kwon37xi