Java Ant 학습
1.프로젝트 요소
procject 요 소 는 Ant 구성 요소 파일 의 루트 요소 입 니 다.Ant 구성 요소 파일 은 최소한 하나의 procject 요 소 를 포함 해 야 합 니 다.그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.모든 procject 요소 에 여러 target 요 소 를 포함 할 수 있 습 니 다.다음은 프로젝트 요소 의 각 속성 을 독자 에 게 보 여 줍 니 다.
1)name 속성
프로젝트 요소 의 이름 을 지정 하 는 데 사용 합 니 다.
2)기본 속성
프로젝트 가 기본적으로 실 행 될 때 실행 할 target 의 이름 을 지정 합 니 다.
3)basedir 속성
기본 경 로 를 지정 하 는 위치 입 니 다.이 속성 이 지정 되 지 않 았 을 때 Ant 의 구성 요소 파일 의 첨부 디 렉 터 리 를 기준 디 렉 터 리 로 사용 합 니 다.
<?xml version="1.0" ?>
<project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJavaCode">
<target name="getBaseDir">
<echo message="The base dir is: ${basedir}"/>
</target>
</project>
위의 예 에서 알 수 있 듯 이 default 속성의 값 을 getBaseDir 로 정의 합 니 다.즉,ant 명령 을 실행 할 때 실행 할 target 을 가리 키 지 않 으 면 기본 target-getBaseDir 를 실행 합 니 다.또한 basedir 속성의 값 을'C:/ThinkInJavaCode'로 정의 하여'C:/ThinkInJavaCode'에 들 어간 후 ant 명령 을 실행 하여 결 과 를 얻 었 습 니 다.
Buildfile: C:\ThinkInJavaCode\build.xml
sayBaseDir:
[echo] The base dir is: C:\ThinkInJavaCode
BUILD SUCCESSFUL
Total time: 0 seconds
2.target 요소
target 은 Ant 의 기본 실행 단위 로 하나 이상 의 구체 적 인 작업 을 포함 할 수 있 습 니 다.여러 target 은 상호 의존 관 계 를 가 질 수 있 습 니 다.다음 속성 이 있 습 니 다:
1)name 속성
target 요소 의 이름 을 지정 합 니 다.이 속성 은 procject 요소 에서 유일 합 니 다.우 리 는 target 요소 의 이름 을 지정 해서 target 을 지정 할 수 있 습 니 다.
2)depends 속성
target 간 의 의존 관 계 를 설명 하 는 데 사 용 됩 니 다.여러 target 과 의존 관계 가 있 을 때","간격 이 필요 합 니 다.Ant 는 depends 속성 에서 target 이 나타 나 는 순서에 따라 각각 target 을 순서대로 실행 합 니 다.의존 하 는 target 이 먼저 실 행 됩 니 다.
3)if 속성
지정 한 속성 이 존재 하 는 지 검증 하 는 데 사 용 됩 니 다.존재 하지 않 으 면 target 은 실행 되 지 않 습 니 다.
4)unless 속성
이 속성의 기능 은 if 속성의 기능 과 정반 대 입 니 다.지정 한 속성 이 존재 하 는 지 검증 하 는 데 도 사 용 됩 니 다.존재 하지 않 으 면 대상 이 실 행 됩 니 다.
5)description 속성
이 속성 은 target 기능 에 대한 간단 한 설명 과 설명 입 니 다.
예 를 들 어 다음 과 같이 설명 한다.
<?xml version="1.0" ?>
<project name ="targetPro" default="targetB">
<target name="targetA" if ="ant.java.version">
<echo message ="Java Version: ${ant.java.version}"/>
</target>
<target name="targetB" depends ="targetA" unless ="philander">
<description>
a depend example!
</description>
<echo message ="The base dir is: ${basedir}"/>
</target>
</project>
다음 결 과 를 보면 target B 라 는 target 을 실행 합 니 다.target A 에 의존 하기 때문에 target A 가 먼저 실 행 됩 니 다.또한 시스템 에 JDK 가 설정 되 어 있 기 때문에 ant.java.version 속성 이 존재 합 니 다.target A 를 실 행 했 습 니 다.출력 정 보 는"[echo]Java 버 전:1.6"입 니 다.target A 가 실 행 된 후에 target B 를 실행 합 니 다.필 랜 더 가 존재 하지 않 기 때문에 unless 속성 은 존재 하지 않 을 때 대상 에 들 어 갑 니 다.이 를 통 해 target B 가 실 행 될 수 있 습 니 다.출력 정 보 는"[echo]The base dir is:C:\ThinkInJavaCode"입 니 다.
Buildfile: C:\ThinkInJavaCode\build.xml
targetA:
[echo] Java Version: 1.6
targetB:
[echo] The base dir is: C:\ThinkInJavaCode
BUILD SUCCESSFUL
Total time: 0 seconds
3.property 요소
property 요 소 는 파 라 메 트릭 이나 매개 변수의 정의 로 볼 수 있 습 니 다.procject 의 속성 은 property 요 소 를 통 해 설정 할 수도 있 고 Ant 밖에서 설정 할 수도 있 습 니 다.build.properties 파일 과 같은 외부 파일 을 도입 하려 면 다음 과 같은 내용 을 통 해 도입 할 수 있 습 니 다.
<property file=” build.properties”/>
property 요 소 는 task 의 속성 값 으로 사용 할 수 있 습 니 다.task 에 서 는 속성 명 을"${"와"}"사이 에 두 고 task 속성 값 의 위치 에 두 는 것 을 통 해 이 루어 집 니 다.
Ant 는 내 장 된 속성 을 제공 합 니 다.시스템 속성 목록 은 자바 문서 에서 System.getPropertis()방법 으로 얻 은 속성 과 일치 합 니 다.이러한 시스템 속성 은 sun 사이트 의 설명 을 참고 할 수 있 습 니 다.이 동시에 Ant 는 자신의 내장 속성 도 제공 했다.다음 과 같다.
basedir:procject 기본 디 렉 터 리 의 절대 경로;
ant.file:buildfile 의 절대 경로 입 니 다.위의 ant.file 값 은 C:\ThinkInJavaCode\build.xml 입 니 다.
ant.version:Ant 의 버 전 정보,본 고 는 1.8.1 이다.
ant.project.name:현재 지정 한 procject 의 이름,즉 앞에서 말 한 procject 의 name 속성 값 입 니 다.
ant.java.version:Ant 에서 검출 된 JDK 버 전 입 니 다.본 고 는 1.6 입 니 다.
예 를 들 어 다음 과 같이 설명 한다.
<? xml version="1.0" ?>
<project name ="propertyPro" default ="example">
<property name ="name" value ="philander"/>
<property name ="age" value ="25"/>
<target name ="example">
<echo message ="name: ${name}, age: ${age}"/>
</target>
</project>
위의 예 에서 사용 자 는 name 과 age 라 는 두 개의 속성 을 설정 하 였 습 니 다.이 두 개의 속성 을 설정 한 후 다음 글 에서${name}과${age}을 통 해 각각 이 두 개의 속성 값 을 얻 을 수 있 습 니 다.
2.ANT 상용 명령
1.copy 명령
copy 는 주로 파일 과 디 렉 터 리 를 복사 하 는 데 사 용 됩 니 다.예 를 들 면 다음 과 같다.
eg1.단일 파일 복사:
<copy file="original.txt" tofile="copied.txt"/>
eg2.파일 디 렉 터 리 복사:
<copy todir="../dest_dir">
<fileset dir="src_dir"/>
</copy>
eg3.다른 디 렉 터 리 로 파일 복사 하기:
<copy file="source.txt" todir="../home/philander"/>
2.delete 명령
파일 이나 디 렉 터 리 를 삭제 합 니 다.예 를 들 어 다음 과 같 습 니 다.
eg1.어떤 파일 을 삭제 합 니 다:
<delete file="/home/photos/philander.jpg"/>
eg2.디 렉 터 리 삭제:
<delete dir="/home/photos"/>
eg3.모든 백업 디 렉 터 리 나 빈 디 렉 터 리 삭제:
<delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>
3.mkdir 명령
디 렉 터 리 를 만 듭 니 다.eg :
<mkdir dir="/home/philander/build/classes"/>
4.이동 명령
파일 이나 디 렉 터 리 를 이동 합 니 다.예 를 들 어 다음 과 같 습 니 다.
eg1.단일 파일 이동:
<move file="sourcefile" tofile=”destfile”/>
eg2.하나의 파일 을 다른 디 렉 터 리 로 이동:
<move file="sourcefile" todir=”movedir”/>
eg3.다른 디 렉 터 리 로 디 렉 터 리 이동:
<move todir="newdir"> <fileset dir="olddir"/></move>
5.echo 명령
이 작업 의 역할 은 로그 나 모니터 의 단계 에 따라 정 보 를 출력 하 는 것 입 니 다.메시지,file,append,level 네 가지 속성 을 포함 합 니 다.예 를 들 어 다음 과 같 습 니 다.
<echo message="Hello,ANT" file="/home/philander/logs/ant.log" append="true">
3.ant 를 이용 하여 자바 프로젝트 구축 및 배치
Ant 는 자바 c,자바,jar 등 명령 을 사용 하여 자바 작업 을 수행 하여 자바 프로젝트 를 쉽게 구축 하고 배치 하 는 목적 을 달성 할 수 있 습 니 다.
1.ant 의 자바 c 명령 을 이용 하여 자바 프로그램 을 컴 파일 합 니 다.
Ant 의 javac 명령 은 자바 프로그램 을 컴 파일 하 는 기능 을 실현 하 는 데 사 용 됩 니 다.다음은 간단 한 예 를 들 어 자바 Test Pro 라 는 자바 프로젝트 를 만 들 고 src 디 렉 터 리 를 소스 코드 디 렉 터 리 로 만 들 며 src 디 렉 터 리 에 Hello World.java 라 는 파일 을 만 듭 니 다.이 파일 의 내용 은 다음 과 같 습 니 다.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world!");
}
}
자바 TestPro 프로젝트 의 루트 디 렉 터 리 에 build.xml 파일 을 만 듭 니 다.이 파일 에서 sr 디 렉 터 리 에 있 는 자바 파일 을 컴 파일 하고 컴 파일 된 class 파일 을 build/classes 디 렉 터 리 에 넣 습 니 다.전체 프로젝트 의 디 렉 터 리 구 조 는 다음 과 같 습 니 다.
|JavaTestPro
|src
|build
|classes
|build.xml
컴 파일 하기 전에 classes 디 렉 터 리 를 지 워 야 합 니 다.이 파일 의 내용 은 다음 과 같 습 니 다.
<?xml version="1.0" ?>
<project name ="javacTest" default="compile" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
</project>
프로젝트 루트 디 렉 터 리(C:\ThinkInJavaCode\JavaTestPro)에서 ant 명령 을 실행 하면 이 디 렉 터 리 에서 새로 생 성 된 build/classes 하위 디 렉 터 리 를 발견 할 수 있 습 니 다.컴 파일 된 Hello World.class 파일 은 이 디 렉 터 리 에 있 습 니 다.
2.자바 명령 으로 자바 프로그램 실행
Ant 에 서 는 자바 명령 을 사용 하여 자바 프로그램 을 실행 하 는 기능 을 수행 할 수 있 습 니 다.위의 build.xml 를 바탕 으로 수정 할 수 있 습 니 다.
<?xml version="1.0" ?>
<project name ="javacTest" default="run" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
<target name="run" depends ="compile">
<java classname ="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
</project>
이 어 콘 솔 에서 출력 을 볼 수 있다."[java]hello world!"
3.jar 명령 으로 jar 파일 생 성
또한 상기 사례 를 바탕 으로 한 걸음 더 나 아가 jar 패 키 지 를 생 성 할 수 있 습 니 다.run 이라는 target 에 다음 과 같은 target 을 추가 할 수 있 습 니 다.
<?xml version="1.0" ?>
<project name ="javacTest" default="jar" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends ="clean">
<mkdir dir ="${basedir}/build/classes"/>
<javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/>
</target>
<target name="run" depends="compile">
<java classname ="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="${basedir}/build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target >
</project>
이 가운데 procject 의 default 속성 은 jar 로 설정 되 어 있 으 며,ant 가 실 행 된 후 프로젝트 의 루트 디 렉 터 리 아래 helloworld.jar 의 jar 패 키 지 를 생 성 하 는 것 을 볼 수 있 습 니 다.다음 명령 을 실행 하여 이 jar 패 키 지 를 실행 할 수 있 습 니 다:
?
1
java -jar helloworld.jar
4.war 명령 으로 자바 프로젝트 포장 하기
src 는 자바 소스 코드 디 렉 터 리 이 고,WebContent 는 각 jsp 에 디 렉 터 리 를 저장 하 며,lib 는 프로젝트 에 인 용 된 패키지 의 디 렉 터 리 입 니 다.WebTest 프로젝트 디 렉 터 리 에 build.xml 파일 을 만 들 었 습 니 다.이 파일 은 이 프로젝트 의 Ant 구성 요소 파일 입 니 다.
|WebContent
|src
|build
|classes
|WebContent
|META-INF
|MANIFEST.MF
|WEB-INF
|lib
|classes
|HelloJSP.jsp
|build.xml
독자 들 은 src 디 렉 터 리 에 앞의 사례 에서 개 발 된 Hello World.java 파일 을 넣 고 WebContent 에서 HelloJSP.jsp 파일 을 만 들 수 있 습 니 다.그 내용 은 간단 합 니 다.바로 Hello 정 보 를 출력 하 는 것 입 니 다.코드 는 다음 과 같 습 니 다.
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>war test for ant</title>
</head>
<body>
Hello JSP!Hello Ant!
</body>
</html>
build.xml , :
<?xml version="1.0" encoding="UTF-8" ?>
<project name ="WebTest" default ="war" basedir =".">
<property name ="classes" value ="${basedir}/build/classes"/>
<property name ="build" value ="${basedir}/build"/>
<property name ="lib" value ="${basedir}/WebContent/WEB-INF/lib"/>
<!-- build -->
<target name ="clean">
<delete dir ="${build}"/>
</target>
<!-- build/classes , class build/classes -->
<target name ="compile" depends ="clean">
<mkdir dir ="${classes}"/>
<javac srcdir ="${basedir}/src" destdir ="${classes}"/>
</target>
<!-- war -->
<target name ="war" depends ="compile">
<war destfile ="${build}/WebTest.war" webxml ="${basedir}/WebContent/WEB-INF/web.xml">
<!-- WebRoot WEB-INF META-INF -->
<fileset dir ="${basedir}/WebContent" includes ="**/*.jsp"/>
<!-- lib jar -->
<lib dir ="${lib}"/>
<!-- build/classes class -->
<classes dir ="${classes}"/>
</war>
</target>
</project>
C:\ThinkInJavaCode\WebTest 디 렉 터 리 에서 ant 를 실행 하면 WebTest.war 파일 이 생 성 됩 니 다.그리고 웹 용기(예 를 들 어 Tomcat)의 해당 디 렉 터 리 에 넣 고(${Tomcata 설치 디 렉 터 리}\webapps)웹 프로젝트 를 실행 할 수 있 습 니 다.
문장http://www.cnblogs.com/philander/articles/1782254.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.