참고 : https://blog.naver.com/centrople/80119012228
Ant로 빌드하는 과정에서 많은 프로퍼티를 사용하는 경우 별도의 프로퍼티 파일을 작성한 후 file이나 resource 속성을 사용하여 프로퍼티를 초기화하면 편리하다.
Ant에서 기본적으로 제공하는 프로퍼티 모든 자바의 시스템 프로퍼티를 Ant의 프로퍼티로 사용할 수 있다. Basedir – 프로젝트의 기본 디렉토리의 절대 경로. <project> 태그의 basedir 속성에 명시된 값 Ant.file – 빌드 파일의 절대 경로 Ant.version - Ant 버전 Ant.project.name – 현재 실행중인 프로젝트의 이름 . proejct의 name 속성으로 지정 Ant.java.version – Ant가 발견한 자바 버전. 현재 “1.1”, “1.2”,”1.3”,”1.4”를 값으로 가질수 있다. |
셈플
<project name="STRUTS_PROJECT" default="deploy" basedir="."> <description> simple example build file </description> <target name="init" description="prepare enviroment"> <property name="catalina.dir" value="C:/Program Files/Apache Group/Tomcat 4.1" /> <property name="catalina.common.lib.dir" value="${catalina.dir}/common/lib" /> <property name="webapp.dir" value="webapp" /> <property name="webapp.WEB-INF.dir" value="${webapp.dir}/WEB-INF" /> <property name="webapp.WEB-INF.lib.dir" value="${webapp.WEB-INF.dir}/lib" /> <property name="webapp.WEB-INF.classes.dir" value="${webapp.WEB-INF.dir}/classes" /> <property name="source.dir" value="${basedir}/src" /> <property name="build.dir" value="${basedir}/build" /> <property name="build.classes.dir" value="${build.dir}/classes" /> <property name="build.jar.dir" value="${build.dir}/jar" /> <property name="dist.dir" value="dist" /> <property name="jarfile.name" value="struts_project.jar" /> <!--set classpath for compile--> <path id="compile.classpath"> <path> <fileset dir="${catalina.common.lib.dir}"> <include name="*.jar"/> </fileset> </path> <pathelement location="${webapp.WEB-INF.lib.dir}/struts.jar" /> </path> </target> <!--delete previous folders--> <target name="delete" depends="init" description="delete directory"> <delete dir="${build.dir}" /> <delete dir="${dist.dir}" /> </target> <!--create new folders--> <target name="create" depends="init" description="create directory"> <mkdir dir="${build.classes.dir}" /> <mkdir dir="${build.jar.dir}" /> <mkdir dir="${dist.dir}" /> </target> <!--compile sources--> <target name="compile" depends="delete, create" description="compile java sources"> <javac srcdir="${source.dir}" destdir="${build.classes.dir}" failonerror="no"> <classpath refid="compile.classpath" /> </javac> </target> <!--packaging--> <target name="package" depends="compile" description="package class files"> <jar jarfile="${build.jar.dir}/${jarfile.name}" basedir="${build.classes.dir}"/> </target> <!--copy the jar file--> <target name="deploy" depends="package" description="deploy jar files"> <copy todir="${dist.dir}"> <fileset dir="${build.jar.dir}"> <include name="**/*.jar"/> </fileset> </copy> </target> </project> |
1. 기본구조
<?xml version=”1.0” encoding=”euc-kr”?> <project name=”projectName” default=”targetNameN” basedir=”.”> <target name=”init”>………..</target> <target name=”compile” depends=”init”>………</target> <target name=”copyJSP” depends=”compile”>………</target> <target name=”copyJar” depends=”copyJSP”>………</target> <target name=”makeWar” depends=”copyJar”>………</target> <target name=”clean” depends=”makeWAR”>………</target> <project> |
1.1 Ant의 규칙
1.1 Project 요소 설정
속성 | 설명 | 필수 |
name | ||
default | ||
basedir |
1.2 Property 요소 속성
속성 | 설명 | 필수 |
name | ||
value | 프로퍼티의 값을 지정 | Name 속성을 사용했을 경우 둘 중의 하나를 반드시 사용 |
location | 지정한 경로명의 절대 경로명을 값으로 지정 | |
resource | 프로퍼티 파일을 읽어 올 때 사용할 자원명을 지정 | Name 속성을 사용하지 않은 경우 셋중의 하나를 반드시 사용해야 한다. |
file | 지정할 파일로부터 프로퍼티 목록을 읽어 온다 | |
environment | 환경 변수를 읽어 올 때 사용할 접두어를 지정 | |
classpath | 자원으로부터 프로퍼티 파일을 읽어 올 때 사용할 클래스패스 | |
classpathref | 클래스패스로 사용할 경로를 <path>요소로부터 가져온다 | |
prefix | Resource나 file속성을 사용하여 읽어 온 프로퍼티를 참조 할 때 사용할 접두어를 지정, 접두어 맨 뒤에 “.”가 포함되어 있지 않을 경우, 자동으로 “.”이 접두어 뒤에 붙는다. |
프로퍼티의 값을 사용할 때에는 ${프로퍼티이름} 형식을 사용
1.3 Target 요소 설정
속성 | 설명 | 필수 |
name | ||
depends | 의존하고 있는 목록 목록인경우 콤마구분 | |
if | 지정한 프로퍼티가 설정되어 있는 경우 타겟을 수행 | |
unless | 지정한 프로퍼티가 설정되어 있지 않은 경우 타겟을 수행 | |
description |
※ 경로 규칙
- 경로 규칙은 파일이나 디렉토리 또는 경로 집합을 사용하는 태스크나 <fileset>이나 <patternset>등에 적용된다. - ‘*’ ----- 0개 또는 그 이상의 글자가 매칭된다. - ‘?’ ----- 한 글자와 매칭된다. - 디렉토리 지정에서’*’를 사용할 경우 디렉토리 트리에서 단 하나의 계층만을 가리키게 되는 반면에 ‘**’는 다계층을 나타낸다. - ‘**’로 패턴이 끝나게 되면 디렉토리뿐만 아니라 모든 파일을 나타낸다. |
Ant에서 excludes속성에 명시하지 않아도 자동으로 처리 대상에 제외되는 파일/디렉토리 **/*~, **/#*#, **/.#*, **/%*%,**/._* **/CVS,**/CVS/**,**/.cvsignore **/SCCS,**/SCCS/** **/vssver.scc **/.svn, **/.svn/** **/.DS_Store |
1.3.1 fileset/dirset 태그 속성 : 파일/디렉토리 집합을 사용하는 태스크에서 사용
속성 | 설명 | 필수 |
dir | 파일 집합을 표시할 때의 루트 디렉토리 | dir이나file중 한 개를 반드시 명시 |
file | 한 개의 파일을 명시할 때 사용 (fileset만 해당) | |
casesensitive | True일 경우 대소문자를 구분해서 처리, 기본값 true | |
followsymlinks | 심볼릭 링크를 따라갈지의 여부를 나타낸다 기본값 true | |
includes(file) | 처리대상에 포함시킬 디렉토리/파일, 속성대신 테그 가능 | |
excludes(file) | 처리대상에 제외시킬 디렉토리/파일, 속성대신 테그 가능 | |
defaultexcludes | 기본적으로 제외되는 파일을 제외시키고 싶지 않으면 defaultexcludes=’no’ |
예시
<copy todir=”backup”> <fileset dir=”${basedir}” includes=”src/**,lib/*.jar,jsp,src/**” exclude=”**/*.bak” defaultexcludes=”no” /> </copy> |
1.3.2 patternset : 파일/디랙토리 집합의 공통부분 지정시(재사용)
- patternset 내에 fileset/dirset 태그 사용
- Includes, includesfile, excludes, excludefile 속성 지원
- Id 속성을 사용하여 패턴 집합의 이름을 지정
- 패턴 집합을 사용할 때에는 refid속성을 사용한다.
예시1) 기본
<patternset id=”commonJar”> <include name=”servlet.jar”/> <include name=”mail.jar”/> <include name=”activation.jar”/> <patternset> |
예시2) refid
<pattern refid=”commonJar”/> |
1.3.3 path : 경로목록을 공통적으로
- <path>에서 경로를 지정할 때에는 <pathelement>태그를 사용
- location 속성은 하나의 디렉토리 또는 파일을 나타낼 때 사용
- 여러 경로를 함께 표시 할 때 각각의 경로는 ‘;’나 ‘:’을 사용하여 구분
<path id=”project.class.path”> <pathelement location=”classes”/> <pathelement path=”lib/servlet.jar;lib/commons-fileupload-1.0.jar”/> </path> |
1.3.3 classpath
<classpath>와 같이 경로를 사용하는 태그에서는 refid속성을 사용하여 <path>요소를 경로값으로 사용할 수 있다.
<classpath refid=”project.class.path”/> |
2 기타 속성
▶ 목록
테그 | 설명 |
copy | 하위 태그로 fileset, / direst 가능, 속성: todir |
mkdir | |
javac | |
delete | |
jar |
2.1. javac: 자바 소스 코드 컴파일
속성 | 설명 | 필수 |
srcdir | 소스가 위치한 디렉토리를 지정 | <src>요소가 사용되지 않은 경우 필수 |
destdir | 생성된 클래스가 위치할 디렉토리를 지정 | |
includes | 컴파일할 파일의 패턴 목록, 기본값 *.java | |
classpath | 컴파일할 때 사용할 클래스패스. ,<classpath>태그를 사용하여 지정가능 |
|
classpathref | <path>로 지정한 경로를 클래스패스로 참조 | |
debug | 디버그 정보 포함, 기본값 false | |
optimize | 최적화 사용, 기본값 false | |
verbose | 긴 결과 제공 | |
failonerror | 오류가 발생하면 빌드 중지, 기본값 true | |
encoding | 소스 파일의 인코딩을 지정 javac의 –encoding 옵션과 동일 |
|
nowarn | on을 값으로 가질 경우 컴파일할 때 –nowarn 옵션을 사용. 기본값은 off | |
deprecation | on을 값으로 가질 경우 –deprecation 옵션을 컴파일할 때에 사용, 기본값은 off |
▶ 예시
<javac srcdir=”소스 코드가 위치한 디렉토리” destdir=”컴파일한 클래스가 위치한 디렉토리” classpath=”클래스패스”> ……. </javac> |
2.2. jar: JAR 파일로 압축
- destfile 속성은 생성할 JAR 파일을 지정
- basedir 속성은 jar파일로 압축할 기본 디렉토리 지정
- includes, includesfile, excludes, excludesfile, defualtexcludes 속성 사용
▶ 예시
<jar destfile=”${dist}/lib/app.jar” basedir=”${build}/classes” /> |
2.3. zip : ZIP 파일로 압축
- includes, includesfile, excludes, excludesfile, 속성 사용
- <zipfileset>은 압축되는 파일의 경로명을 변경 가능
속성 | 설명 | 필수 |
prefix | ZIP 파일에 압축될 때 변경되어 들어갈 경로명 | |
fullpath | 특정 파일의 변경될 경로를 지정 | |
filemode | 유닉스 기반의 시스템에서 사용되며, 압축되는 파일의 모드를 지정. 기본값은 644 | |
dirmode | 유닉스 기반의 시스템에서 압축되는 디렉토리의 모드를 지정. 기본값은 755 |
2.4. war : 웹 어플리케이션 압축
- basdir 속성을 사용하여 해당 디렉토리를 WAR파일로 묶는다.
- lib 태그 지정한 파일들을 WEB-INF/lib 디렉토리에 위치하게 해준다.
- classes 태그는 지정한 디렉토리에 위치한 classes 파일들을 WEB-INF/classes디렉토리에 위치하게 해준다.
- webxml 속성은 지정한 파일을 WEB-INF/web.xml 파일로 복사한다
- includes, includesfile, excludes, excludesfile, defualtexcludes 속성 사용
- 파일을 묶을 때 파일의 경로를 변겨해주는 zipfileset 태그 사용 가능
▶ 예시
<war destfile=”main.war” webxml=”src/metadata/web.xml”> <fileset dir=”src/mainapp/html” /> <fileset dir=”src/mainapp/j네” /> <lib dir=”lib”> <exclude name=”logging2.jar”/> </lib> <classes dir=”build/main/classes”/> <zipfileset dir=”src/imagefile/images” prefix=”images”/> </war> |
2.5. tar : TAR 파일의 생성
- basedir속성이나 <fileset> 태그 등을 사용하여 묶을 파일의 목록을 지정
- compression 속성을 사용하여 우너하는 방식으로 압축가능, “gzip”, “bzip2”,”none”값 지정
- tarfileset 태그는 파일을 묶을 때 파일의 경로를 변경해 주며, 파일에 대한 사용자 및 그룹을 지정할 수도 있다.
▶ 예시
<tar destfile=”${dist}/example.tar.gz” basedir=”${build}” compression=”gzip”/> |
속성 | 설명 | 필수 |
mode | 3자리 8진수값 | |
useranme | 파일에 대한 사용자 이름을 지정, UID와는 다름 | |
group | 파일에 대한 그룹 이르을 지정, GID와는 다름 | |
prefix | ZIP 파일에 압축될 때 변경되어 들어갈 경로명 | |
fullpath | 특정 파일의 변경될 경로를 지정 | |
preserveLeadingSlashes | 맨 앞의 ‘/’를 유지할지의 여부를 지정, 기본값은 false |
2.6. javadoc : API 문서의 생성
- 소스 코드로부터 Javadoc API문서를 생성
- 옵션이 너무 많아서 생략^^;
2.7. copy : 파일 복사
- 지정한 디렉토리로 파일을 복사
- 개개의 파일을 복사할 수도 있고 디렉토리 단위로 복사할 수도 있다.
▶ 예시
<copy todir=”${build}/src”> <fileset dir=”${workspace}/src”/> </copy> |
속성 | 설명 | 필수 |
file | 복사할 파일을 지정 | <fileset>으로 복사할 파일 목록을 지정하지 않은 경우 필수 |
tofile | 복사될 파일을 지정 | |
todir | 원본을 복사할 디렉토리 지정 | |
overwrite | true인경우 기존에 존재하는 파일을 덮어 쓴다. 기본값 false | |
preservelastmodified | True인 경우 원본의 최종 수정 날짜를 유지. 기본값은 false | |
includeEmptyDirs | <fileset>으로 지정한 디렉토리 중 텅빈 디렉토리도 복사할지의 여부를 지정, 기본값은 true | |
failonerror | 파일이 없을 경우 빌드 중단, 기본값 true | |
verbose | 복사한 파일 목록, 기본값 false |
2.8. mkdir : 디렉토리의 생성
▶ 예시
<mkdir dir=”${build}/webapp/WEB-INF/classes” /> |
2.9. delete : 파일의 삭제
- file 속성 - 특정 파일을 삭제하기 위해 지정
- dir 속성 - 지정 디렉토리 및 그 하위 디렉토리까지 모두 삭제
- includes, includesfile, excludes, excludesfile, defualtexcludes 속성 사용
- <fileset> 태그를 사용하여 삭제할 파일의 집합 표시 가능 (단 파일만 삭제될 뿐 디렉토리는 삭제되지 않는다)
- includeEmptyDirs 속성 - true로 지정하면 텅빈 디렉토리까지 삭제
- failonerror 속성 – 오류시 빌드 중단, 기본값 true
- verbose속성 – 삭제할 파일 목록, 기본값 false
2.10. ant : 또 다른 빌드 파일의 실행
- 하나의 프로젝트가 여러 개의 서브 프로젝트로 구성되어 있는 경우 한번에 서브 프로젝트를 포함한 모든 프로젝트를 빌드함
속성 | 설명 | 필수 |
antfile | 사용할 빌드 파일을 지정, 명시하지 않을 경우 build.xml파일 사용, dir 속성에 주어진 디렉토리에 대해 상대 경로로 명시해야 함 | |
dir | 새로운 Ant 프로젝트의 basedir을 지정, 사용될 빌드 파일에서 basedir 속성을 지정하고 있다면 무시됨 | |
target | 수행할 타겟을 지정 | |
output | 새로운 Ant 프로젝트의 수행 결과를 저장할 파일을 지정 | |
inheritAll | 기본값 true이며 새로운 Ant 프로젝트는 현재Ant 프로젝트의 모든 프로퍼티를 전달받는다. | |
inheritRefs | 기본값 true이며 새로운 Ant 프로젝트는 현재 Ant 프로젝트의 모든 참조를 전달받는다. |
2.11. java : 자바 실행
속성 | 설명 | 필수 |
classname | 실행할 클래스 이름 | 둘 중 하나 필수 |
jar | 실행할 jar 파일의 위치 | |
classpath | 사용할 클래스 패스를 지정 | |
classpathref | 미리 지정한 <path>요소를 참조 | |
fork | true인경우 새로운 가상 머신에서 클래스를 수행, 기본값은 false | |
maxmemory | 포크된 가상 머신에 할당할 메모리의 최대 크기를 지정 (fork가 false인 경우 무시) | |
dir | 가상 머신을 호출할 디렉토리(fork가 false인 경우 무시) | |
output | 결과 파일 | |
append | 기본 파일에 연결하거나 겹쳐씀 |
▶ 예시
<java classname=”Add” classpath=”${basedir}/bin”> <arg value=”100”/> <arg value=”200”/> </java> |
2.12. native2ascii : 유니코드로의 변환..
- ResourceBundle 클래스나 Properties 클래스를 사용하여 프로퍼티 파일로부터 정보를 읽어올 때 파일에 있는 문자를 유니코드로 변환해준다.
- Src 속성은 변환할 파일들의 위치한 기준 디렉토리를 지정
- Dest 속성은 변환한 결과를 저장할 디렉토리
- includes, includesfile, excludes, excludesfile, defualtexcludes 속성 사용
- <include>,<exclude>태그를 사용하여 원하는 파일만 변환처리 가능
- encoding속성은 변환할 파일의 인코딩 지정(명시하지 않을 경우 JVM 기본 인코딩 사용)
- reverse 옵션은 이스케이프된 유니코드를 지정한 인코딩을 사용하는 문자열로 변환
2.13. buildnumber : 빌드 번호
- 파일에서 빌드 번호를 읽고 build.number를 설정한 다음 build.number+1의 값을 파일에 기록
▶ 예시
<buildnumber file=”buildnum.txt”/> |
2.14. echo
- System.out(기본값), 파일, 로그, 수신기에 메시지를 기록
속성 | 설명 | 필수 |
message | 기록할 텍스트 | 텍스트를 요소 컨텐츠로 사용하지 않을 경우 필수 |
file | 결과 파일 | 선택 |
append | 파일을 겹쳐 쓰지 않고 연결, 기본값 false |
▶ 예시
<echo message=”Hello”/> <echo> This is a message from Ant </echo> |
2.15 tstamp
- DSTAMP, TSTAMP, TODAY 프로퍼티를 설정
- DSTAMP : yyyyMMdd
- TSTAMP : hhmm
- TODAY : MMM dd yyy
cf. <format>은 Java의 SimpleDateFormat 클래스에서 정의한 패턴을 사용해 현식을 변경하는데 쓰인다.
'IT > java' 카테고리의 다른 글
Java에서 odbc를 통하여 Execel을 쿼리 사용 (0) | 2022.09.04 |
---|---|
Java 교육 Step4(스레드 스트림과 FileI/O) (0) | 2022.07.14 |
Java 교육 Step3(래퍼 클래스, 제너릭, 컬렉션 프레임워크) (0) | 2022.07.14 |
Java 교육 Step2 (추상클래스,인터페이스, 내부클래스, 기타문법) (0) | 2022.07.14 |
Java 교육 Step1 (OOP,String, Console In/Out, 상속) (0) | 2022.07.14 |