[Ant] 사용자 정의 Ant Task 생 성 및 디 버 깅

Ant 는 Apache 재단 에서 플랫폼 을 뛰 어 넘 는 구조 재 도구 로 현재 각 오픈 소스 프로젝트 의 구조 에 광범 위 하 게 응용 되 었 다.
    Ant 자체 가 일련의 Core Task 를 제공 하여 디 렉 터 리 관리, 컴 파일, 실행 등 기능 을 쉽게 실현 할 수 있 습 니 다.물론 Core Task 가 제공 하 는 기능 외 에 도 우 리 는 기능 적 확장 에 대한 수요 가 있다.간단 한 방식 은 사용자 정의 기능 을 jar 패키지 로 봉 하고 Task - java 를 호출 하여 주 클래스 를 실행 하 는 것 입 니 다. 이렇게 하 는 문 제 는 입력 한 속성 이 매개 변수 문자열 로 나타 나 직관 적 이지 않 습 니 다.그래서 ant 는 다른 방식 을 제공 합 니 다: 사용자 정의 Task.사용자 정의 Task 는 Core - task 와 마찬가지 로 자신의 Task 이름과 속성 이 있 습 니 다.ant Task 를 사용자 정의 하 는 방법 과 Task 의 생 성 을 사용자 정의 하 는 방법 을 알려 드 립 니 다.
    1. 작업 을 만 드 는 방법
        이 부분 은 ant 매 뉴 얼 에 잘 쓰 여 있 습 니 다. 먼저 붙 여 주세요.
It is very easy to write your own task:
  • Create a Java class that extends org.apache.tools.ant.Task or another class that was designed to be extended.
  • For each attribute, write a setter method. The setter method must be a public void method that takes a single argument. The name of the method must begin with set , followed by the attribute name, with the first character of the name in uppercase, and the rest in lowercase*. That is, to support an attribute named file you create a method setFile . Depending on the type of the argument, Ant will perform some conversions for you, see below.
  • If your task shall contain other tasks as nested elements (like parallel ), your class must implement the interface org.apache.tools.ant.TaskContainer . If you do so, your task can not support any other nested elements. See below.
  • If the task should support character data (text nested between the start end end tags), write a public void addText(String) method. Note that Ant does not expand properties on the text it passes to the task.
  • For each nested element, write a create, add or addConfigured method. A create method must be a public method that takes no arguments and returns an Object type. The name of the create method must begin with create , followed by the element name. An add (or addConfigured) method must be a public void method that takes a single argument of an Object type with a no-argument constructor. The name of the add (addConfigured) method must begin with add ( addConfigured ), followed by the element name. For a more complete discussion see below.
  • Write a public void execute method, with no arguments, that throws a BuildException . This method implements the task itself.

  •     간단하게 번역 해 주세요.
            우선% ANTHOME% / lib 의 ant. jar 는 classpath 를 도입 하여 org. apache. tools. ant. Task 의 하위 클래스 를 만 듭 니 다.
            하나의 속성 을 지원 하려 면 하나의 Public 함수 만 간단하게 실현 해 야 합 니 다. 함수 이름 은 set + 속성의 소문 자 입 니 다.사용자 가 이 속성 을 입력 하면 ant 는 자동 으로 이 함 수 를 호출 합 니 다.
            직렬 연결 속성 을 지원 하려 면 org. apache. tools. ant. Task Container 의 인 터 페 이 스 를 실현 해 야 합 니 다.
         부모 클래스 의 Public void execute 함 수 를 다시 불 러 오고 주 논 리 를 실현 합 니 다. 오류 가 발생 하면 BuildException 의 이상 을 던 져 주 십시오. 함수 가 값 을 되 돌려 주지 않 았 기 때 문 입 니 다.
       다음은 두 가지 예 입 니 다.
    package com.mydomain;
    
    import org.apache.tools.ant.BuildException;
    import org.apache.tools.ant.Task;
    
    public class MyVeryOwnTask extends Task {
        private String msg;
    
        // The method executing the task
        public void execute() throws BuildException {
            System.out.println(msg);
        }
    
        // The setter for the "message" attribute
        public void setMessage(String msg) {
            this.msg = msg;
        }
    }
    

    It's really this simple ;-)
    Adding your task to the system is rather simple too:
  • Make sure the class that implements your task is in the classpath when starting Ant.
  • Add a <taskdef> element to your project. This actually adds your task to the system.
  • Use your task in the rest of the buildfile.

  • Example
                               
     
     
     끼 워 넣 은 경우 노드 클래스 를 실현 하고 부모 클래스 에서 벡터 로 String 을 대체 하여 속성 을 표시 해 야 합 니 다. 이 안 에는 구체 적 으로 소개 하지 않 습 니 다.
    2. 사용자 정의 Task 디 버 깅 방법
    ant 자 체 는 일괄 처리 이 고 논리 도 자바 로 이 루어 집 니 다. 위의 이 해 를 결합 하면 사용자 정의 클래스 Task 는 refect 방식 으로 자바 가상 컴퓨터 로 불 러 와 서 실 행 된 것 을 알 수 있 습 니 다.즉, 주 클래스 는 사용자 의 프로젝트 에 존재 합 니 다.하나의 방식 은 ant 의 해당 jar 를 현재 프로젝트 의 classpath 에 도입 하여 application 의 debug 설정 을 만 들 고 주 류 를 ant 의 주 클래스 로 설정 하 는 것 입 니 다: org. apache. tools. ant. launch. Launcher.그러나 존재 하 는 문제점 이 매우 많 습 니 다. 먼저 ant 가 실행 하 는 환경 변수, 현재 디 렉 터 리 등 은 모두 실제 운영 환경 과 차이 가 있 습 니 다.많은 환경 정보 와 파 라 메 터 를 설정 하려 면 여러 번 디 버 깅 하 는 데 불리 합 니 다.
    내 가 추천 하 는 방식 은 자바 의 원 격 디 버 깅 을 이용 하여 디 버 깅 의 목적 을 달성 하 는 것 이다.
     
    2.1 원 격 디 버 깅 서버 만 들 기
    자바 원 격 디 버 깅
    -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=3999,suspend=n
    -XDebug               디 버 깅 사용 -Xnoagent             기본 sun. tools. debug 디 버 거 를 사용 하지 않 습 니 다. -Djava.compiler=NONE  JIT 컴 파 일 러 의 불 러 오 는 것 을 금지 합 니 다. -Xrunjdwp             JDWP 를 불 러 오 는 JPDA 는 실행 인 스 턴 스 를 참고 합 니 다.transport             디 버 깅 프로그램 과 VM 에서 사용 하 는 프로 세 스 간 통신 에 사용 합 니 다.dt_socket             소켓 전송.dt_shmem              공유 메모리 전송 은 Windows 에 만 제 한 됩 니 다.server=y/n            VM 을 디 버 깅 서버 로 실행 해 야 하 는 지 여부 입 니 다.address=3999          서버 의 포트 번 호 를 디 버 깅 합 니 다. 클 라 이언 트 는 서버 의 포트 번 호 를 연결 하 는 데 사 용 됩 니 다.suspend=y/n           디 버 깅 클 라 이언 트 가 연결 을 만 든 후에 VM 을 시작 할 지 여부 입 니 다.
     
    자바 의 원 격 디 버 깅 JDPA 는 JDWP 프로 토 콜 을 기반 으로 하 는 대화 형 디 버 깅 방식 으로 VM 의 운영 환경 과 디 버 깅 환경 이 서로 독립 된 것 이 가장 큰 특징 이다.이렇게 하면 운행 과 디 버 깅 의 환경 문 제 를 잘 해결 할 수 있다.
    원 격 디 버 깅 을 실현 하려 면 server 엔 드 의 가상 컴퓨터 매개 변수 에 추가 해 야 합 니 다.
    -Xdebug -Xrunjdwp:transport=dt_socket,address=5050,server=y,suspend=y
    즉, 포트 방식 으로 JDWP 통신 을 하고 포트 는 5050 이 며 걸 기 방식 으로 클 라 이언 트 가 연결 되 어야 가상 컴퓨터 를 시작 합 니 다.
    ant 에 있어 서 이 매개 변 수 는 ant 주 류 를 시작 하 는 매개 변수 에 추가 해 야 합 니 다.우 리 는 ant. bat 를 분석 하여 보 았 다.
    "%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%/lib/ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
    반면% ANNOPTS% 라 는 환경 변 수 는 일괄 처리 하기 전에 설정 되 지 않 았 습 니 다. 이것 이 바로 ANT 가 우리 에 게 남 겨 준 조작 매개 변수 입 니 다. debug 를 만 듭 니 다.ant.bat
     
    set ANT_OPTS=
    -Xdebug -Xrunjdwp:transport=dt_socket,address=5050,server=y,suspend=y
    call ant %*
     
    bebug 로ant. bat 를 교체 하면 다른 환경 변수 에 영향 을 주지 않 고 원 격 디 버 깅 server 를 시작 할 수 있 습 니 다.
     
     
    2.2 원 격 서비스 클 라 이언 트 만 들 기
    eclipse 로 사용자 정의 Task 가 있 는 프로젝트 를 열 고 Debug configuration 을 열 고 Remote Java Application 을 추가 합 니 다.
    연결 유형 선택: 표준 (SocketAttach)
    연결 선택 속성:
        Host: local host
        Port: 5050
    2.3 디 버 깅 시작
    대응 하 는 위치 에서 debugant 는 ant 를 교체 하여 관련 xml 스 크 립 트 를 실행 합 니 다. 이 때 가상 기 회 를 끊 습 니 다.
    eclipse 코드 의 해당 위치 에 정지점 을 설정 하고 방금 만 든 configuration 으로 디 버 깅 합 니 다.
    이 때 ant 의 가상 컴퓨터 가 실행 되 고 정지점 에 해당 하 는 위치 에서 응답 합 니 다.
     
    OK, 이제 사용자 정의 task 가 가 져 다 주 는 편 의 를 누리 세 요.

    좋은 웹페이지 즐겨찾기