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 생성 경로


발생했던 문제

  1. jenkins 로 돌리는데 workplace에 xml, test.class 파일들이 생성되지 않았다. 분명 build success였는데..
    • 이유는 간단했다 project의 default 설정이 complie로 되어있어서 test까지 작업을 하지 않았던 것이다.