[출처] 생각이...??
설치하기
Linux(ubuntu)에서는 아래 한줄로 내려받기 + 설치 + 환경설정 끝.
-
sudo apt-get install ant
윈도우에서는
- 다운로드 받는다.
http://ant.apache.org/ - 압축을 풀어서 적당한 위치로 이동한다.
C:\Program Files\apache-ant-1.7.1\ 이정도 위치에 - 시작 > 제어판 > 시스템 > 고급 > 환경변수 로 들어가서
- PATH 에 C:\Program Files\apache-ant-1.7.1\bin 추가
- JAVA_HOME 변수 추가 (이미 설치된 자바의 위치 등록)
다음 명령으로 잘 설치 되었는지 확인 한다.
ant --version
SVN 사용하기
사이트 : http://subclipse.tigris.org/svnant.html
http://svnkit.com/kb/user-guide-svnant.html
-
다운 로드
SvnAnt 1.2.x 버전을 다운 받는다. - 설치
/lib/*.jar 파일을 $ANT_HOME/lib 로 Copy 하면 끝.
예)
<taskdef resource="org/tigris/subversion/svnant/svnantlib.xml"/>
<target ..... > <svn username="guest" password=""> <checkout url="http://subclipse.tigris.org/svn/subclipse/trunk/svnant/" revision="HEAD" destPath="svnant" /> </svn> </target>
위 소스중 다음의 태그를 포함시키지 않으면, "failed to create task or type svn"를 만나게 될 것이다.
<taskdef resource="org/tigris/subversion/svnant/svnantlib.xml"/>
ㅇ Update
- <svn>
<update dir="${target.web}" />
</svn>
ㅇ commit
- <svn username="${svn.userid}" password="${svn.userpwd}">
<commit message="변경 사항" dir="${target.web}" recurse="true" />
</svn>
ㅇ auto file add
- <svn >
<add>
<svnFileSet dir="${target.web}">
<svnUnversioned/>
</svnFileSet>
</add>
</svn>
ㅇ 더 자세한 내용은
사이트에 직접 상세문서가 없다(나만 못찾는가?) .
antsvn을 설치하기 위해 받은 파일을 열어보면 doc 라는 디렉토리에서 상세 문서를 볼 수 있다
*.jar 를 classpath 로 잡기
웹서버 프로그램 컴파일시 /WEB-INF/lib/*.jar 파일을 classpath로 참조 하게 되는데 ant build시 일일이 적어 줘야 하는 부담이 있다.
특히나, cvs나 svn 같은 버젼관리 프로그램으로 다운받은 프로그램을 컴파일 할 경우 일일이 작성해서 만들 수 는 없는것이다.
그래서 다음과 같은 방법을 통해 동적인 참조를 만들어 본다.
컴파일시 다음과 같이 사용된다.
- <target name="compile" >
<javac destdir="${svn.dest}/WEB-INF/classes" srcdir="${svn.dest}/WEB-INF/src" >
<classpath > - <fileset dir="${svn.dest}">
<include name="**/WEB-INF/lib/*.jar" />
<include name="**/WEB-INF/lib/.*.zip" />
</fileset> - </classpath> </javac>
</target>
디렉토리가 없을 조건의 경우 만들기
ㅇ 디렉토리가 없으면 true가 되는 조건
- <condition property="check_dir" >
<not>
<available file="${svn.dest}/WEB-INF/classes"/>
</not>
</condition>
ㅇ위 조건이 참일 경우 디렉토리 만들기
- <target name="make_dir_classes" if="check_dir">
<mkdir dir="${svn.dest}/WEB-INF/classes" />
</target>
파일들을 이동
ㅇ 파일을 복사
- <copy todir="${project.dest}" file="some.file" />
ㅇ파일들을 복사
- <copy todir="${project.dest}" > <!-- to dir -->
<fileset dir="${svn.dest}" /> <!-- from -->
</copy>
ㅇ 일부 파일만 복사
- <copy todir="${project.dest}/WEB-INF/classes/" >
<fileset dir="${project.dest}/WEB-INF/src/" includes="*.xml" />
<fileset dir="${project.dest}/WEB-INF/src/" includes="*.propertie"/>
</copy>
네이티브 명령어 실행
운영체제에 적절한 명령어를 실행 할 경우 <exec> 태그를 사용
네이티브 명령어
(testdb라는 데이타베이스 생성)
- psql -U postgres -c 'create database testdb'
ant에서는
- <exec executable="/usr/bin/psql"
dir="." >
<arg line="-U postgres -c 'create database testdb'" />
</exec>
Ant Task를 사용하여 Java Class 이용
ant 명령어로 처리 할 수 없는 좀더 복잡한 로직에 대해서는 직접 java class를 만들어 이용 할 수 있다.
먼저 ant 소스부터 보자
- <target name="change_context_name" >
<taskdef name="ccn" classname="com.action.ChangeContextName"/> <!-- Class 정의 -->
<ccn context_name="testsrv"
file="**/WEB-INF/sun-web.xml" /> <!-- 사용 -->
</target>
ㅇ <taskdef /> 태그를 이용하여 사용자가 만든 클래스를 사용할수 있도록 정의
ㅇ <ccn />은 <taskdef /> 태그에서 정의된 name이다. 사용자가 임의로 바꿔 사용할 수 있다.
ChangeContextName 를 열어 보면 다음과 같다
- package com.action;
public class ChangeContextName extends org.apache.tools.ant.Task
{
String context_name;
public String getContext_name()
{
return context_name;
}
public void setContext_name(String context_name)
{
this.context_name = context_name;
}
public void execute()
{
System.out.println("실행이 되었다...... ^^");
System.out.println("컨텍스트명["+this.context_name+"]");
}
}
ㅇ Ant Task가 되려면
- org.apache.tools.ant.Task를 상속 받아야 한다.
- public void execute(){ .... } 에서 실행이 된다
- attribute값을 전달 받으려면
public void setXXXX(String val) 와 같이 사용한다.
out of memory
ant 구동중 out of memory를 만날경우
다음의 내용을 환경변수에 추가 하면된다.
- ANT_OPTS=-Xmx512M
사용자에게 입력받기
<input>태그를 이용하여 사용자로부터 값을 입력받도록 한다
- <target name="get-input">
<input message="작업할 디렉토리명은?"
addproperty="target.name" />
<echo message="입력받은값 > [${target.name}]"/>
</target>
ant-contrib사용(조건문 사용하기)
http://ant-contrib.sourceforge.net/ > download page 접속 > ant-contrib package 클릭 > ant-contrib-1.0b3-bin.zip 다운로드
압출풀면 ant-contrib-1.0b3.jar 파일이 나옴
이파일을 ANT_HOME/lib/ 에 copy 하면 끝.
ㅇ 선언문
정의 해 주면 사용가능 해 진다
ㅇ 사용 태그
<if> <switch> <foreach> <trycatch> 태그가 사용 가능하다.
- switch
- <switch value="${input.value}">
<case value="1">
<echo message="1의 경우..."/>
</case>
<default>
<echo message="이도저도 아닌경우.."/>
</default>
</switch>
- if
- <if>
<equals arg1="${foo}" arg2="bar" />
<then>
<echo message="The value of property foo is bar" />
</then>
<else>
<echo message="The value of property foo is not bar" />
</else>
</if>
- foreach
- tyrcatch