Ant 빌드툴이란
자바 빌드툴로써 build.xml (Configuration 파일)에 각 task를 작성한다.
이 task 들은 maven, gradle에서 기본적으로 제공하는 task를 작성 할 수 있다.
구성은 project , target으로 구성되며 target안에 task를 구현한다.
project 내부에 <property ~~>로 property를 구성할 수 있다.
명령어
project
build file에 단 하나만 들어가고 project를 명시
속성
name : 프로젝트의 이름
default : target이 지정되어있지 않을때 기본적으로 실행됨
basedir : 기본 경로를 적어준다. property에 명시 시 해당 경로를 참조함
<project name="AntTest" default="compile" basedir=".">
<property name="build.dir" location="bin"></property>
<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.prod.dir}">
<classpath refid="project.classpath"></classpath>
</javac>
</target>
</project>
target
빌드의 각 단계, task name을 정하고 기능을 구현하며 수행순서를 정할 수 있다.
속성
name : 해당 task 의 name
depends : 의존성을 나타내는 속성으로 수행순서를 결정 할 수있다.
<target name="prepare">
<target name="compile" depends="prepare">
<target name="compile-tests" depends="compile">
<target name="test" depends="compile-tests">
task는 prepare> compile> compile-tests> test순으로 실행 됨
tast
작업단위
속성
mkdir : 폴더 생성
delete : 파일 삭제, fileset을 통해 삭제대상 선택 가능
copy : 파일 복사, fileset을 통해 삭제대상 선택 가능
javac : java compile
javadoc : java API 문서생성(?)
jar(혹은 tar,zip) : jar 및 tar,zip 파일으로 생성
javac
srcdir : java 파일의 경로
destdir : complie 시 class 파일이 위치할 경로
debug : debug 정보 보여줄 것인지, default : off
verbose : complie 시 상세한 진행상황, default : off
includeAntRuntime : classpath에 ant runtime 라이브러리 포함여부 false 권장
failonerror : 빌드 실패할 경우 compile error 를 표시 할 것인지
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.prod.dir}">
<classpath refid="project.classpath"></classpath>
</javac>
</target>
junit
junit 테스트도 할 수 있는데 xml 로 테스트 결과를 저장할 수 있다.
<junit haltonfailure="true" printsummary="yes" haltonfailure="yes" fork="yes">
printsummary: 결과를 한줄로 요약하여 출력 여부
haltonerror: 예기치 못한 에러가 발생했을 때 빌드 멈춤 여부
haltonfailure: Test 결과에 실패가 발생했을 때 빌드 멈춤 여부
fork: 각 테스트가 독립된 자바가상머신을 사용할지 여부
<formatter type="xml"></formatter>
<formatter type="brief" usefile="false"/>
type : 포멧의 스타일, plain : 평문, brief : 브리프, xml 저장 / usefile : 테스트결과 콘솔출력
<batchtest todir="${test.reports}">
<fileset dir="${build.test.dir}" includes="**/*Test.class"></fileset>
</batchtest>
테스트 클래스의 위치 설정, 한 클래스만 하려면 <test name=”~~”>
fileset = test 클래스위치, inculde name = 포함할 클래스
<target name="test" depends="compile-tests">
<junit haltonfailure="true">
<classpath refid="project.classpath"></classpath>
<formatter type="xml"></formatter>
<formatter type="brief" usefile="false"/>
<batchtest todir="${test.reports}">
<fileset dir="${build.test.dir}" includes="**/*Test.class"></fileset>
</batchtest>
<sysproperty key="doc.dir" value="${doc.dir}"></sysproperty>
<sysproperty key="index.dir" value="${index.dir}"></sysproperty>
</junit>
</target>
junit report
junit의 결과 report를 html로 생성할 수 있다.
<target name="report" depends="test">
<junitreport todir="${test.reports}"> // 레포트를 생성 할 위치
<fileset dir="${test.reports}"> // test 파일이 생성된 위치
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.reports}" />
</junitreport>
</target>
filest 으로 원하는 폴더등을 설정할 수 있고 include 를 써서 원하는 파일등을 읽어올 수 있다.
jar
jar, zip, tar 생성 가능
jarfile : 생성될 jar 파일 이름
basedir : jar 생성 경로
발생했던 문제
- jenkins 로 돌리는데 workplace에 xml, test.class 파일들이 생성되지 않았다. 분명 build success였는데..
- 이유는 간단했다 project의 default 설정이 complie로 되어있어서 test까지 작업을 하지 않았던 것이다.