[Ant] 사용자 정의 Ant Task 생 성 및 디 버 깅
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:
org.apache.tools.ant.Task
or another class that was designed to be extended. 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. 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. public void addText(String)
method. Note that Ant does not expand properties on the text it passes to the task. 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. 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:
<taskdef>
element to your project. This actually adds your task to the system. 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 가 가 져 다 주 는 편 의 를 누리 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vagrant 를 사용 하여 Windows 에 개발 환경 을 배치 합 니 다.개발 자 에 게 Vagrant 는 팀 원 들 의 개발 환경 을 통일 시 켜 줄 수 있다.만약 당신 이나 당신 의 동료 가 Vagrantfile 을 만 들 었 다 면, vagrant 를 실행 하기 만 하면 됩 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.