|  |  |
|
CI 기초: 코드 컴파일
약속대로 이제 코딩을 시작해보겠다! 본 절에서는 소프트웨어 프로젝트의 기본 인프라스트럭처를 설정하는 방법을 다룬다. 즉, 프로젝트의 클래스패스(classpath)와 컴파일을 설정한다는 뜻이다. 믿어지지 않겠지만 이런 기초 단계가 없으면 그 어떤 것도 가능하지 않다.
앤트로 컴파일하기
신뢰성 있고 반복적인 빌드를 만드는 첫 단계는 하드코드된 값, 특히 디렉터리처럼 관련된 파일시스템 경로를 한정하는 것이다. 따라서 Listing 1은 다양하게 관련된 타겟에서 참조할 수 있는 앤트 속성의 수를 정의한다.
Listing 1. 앤트에서 속성 설정하기
<property name="default.target.dir" value="target" />
<property name="classes.dir" value="${default.target.dir}/classes" />
<property name="test.classes.dir" value="${default.target.dir}/test-classes" />
<property name="test.report.dir" value="${default.target.dir}/test-reports" />
<property name="lib.dir" value="${basedir}/lib" />
<property name="source.dir" value="src/java" />
<property name="test.source.dir" value="test/java" />
<property name="test.pattern" value="**/**Test.java" />
|
클래스패스 만들기
모든 써드파티 라이브러리가 lib 디렉터리에 위치해 있기 때문에 그림 2처럼 디렉터리를 훑어 신속하게 클래스패스를 만들 수 있다(디렉터리는 Listing 1의 lib.dir 변수를 참조한다는 것에 주목하자).
Listing 2. lib 디렉터리에 있는 일련의 JAR 파일에서 클래스패스 만들기
<target name="init">
<mkdir dir="${classes.dir}" />
<mkdir dir="${test.classes.dir}" />
<path id="build.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
</target>
|
소스코드 컴파일하기
클래스패스가 정의됐으니 Listing 3처럼 소스코드를 컴파일하는 target을 만들 수 있다:
Listing 3. 앤트의 javac 작업을 사용하여 소스코드 컴파일하기
<target name="compile-source" depends="init"
description="compiles all .java files in source directory ">
<javac destdir="${classes.dir}" srcdir="${source.dir}" classpathref="build.classpath" />
</target>
|
앤트는 javac라는 작업을 통해 컴파일을 쉽게 정의한다. 이 작업은 클래스패스를 사용하여 한 디렉터리에서 코드를 컴파일하고 또 다른 디렉터리에 클래스 파일을 놓는다.
|  |
|