Ant를 사용한 배포 자동화
1. 개발은 Eclipse를 사용하고 있습니다.
2. 배포할 곳은 Tomcat 서버입니다.
1. 톰캣 매니저 설정하기.
톰캣 홈(저는 /usr/share/tomcat5)의 conf 디렉터리에 tomcat-users.xml 파일을 다음과 같이 수정합니다.
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="배포할 때 사용할 유저 네임" password="배포할 때 사용할 유저 패스워드" roles="admin,manager"/>
</tomcat-users>
2. 톰캣 매니저 확인.
톰캣 서버 URL/ 접속 한 다음 왼쪽 매뉴에서 manager 선택하여 위에 설정한 "배포할 때 사용할 유저 네임"과 "배포할 때 사용할 패스워드"로 로그인 해봅니다.
3. 톰캣 클라이언트 디플로이어 다운로드 및 압축풀기.
먼저 배포할 곳의 톰캣 서버과 같은 버전의 디플로이어를 설치 해야합니다.
디플로이어는 아파치 FTP에서 찾을 수 있습니다.
다운로드 한 파일의 압축을 풀면 lib 디렉터리가 보입니다.
이 디렉터리에 있는 모든 파일들을 Ant가 참조할 수 있는 라이브러리 폴더로 복사해 줍니다.
4. 빌드파일 작성.
<project name="Seminar" basedir=".">
<!-- Load properties -->
<property file="src/server.properties" />
<!-- Set classpath -->
<path id="base-classpath">
<pathelement path="src" />
<pathelement path="bin" />
<fileset dir="web/WEB-INF/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${ant.home}/lib" />
</path>
<!-- Configure the custom Ant tasks for the Manager application -->
<taskdef resource="org/apache/catalina/ant/catalina.tasks" classpathref="base-classpath" />
<!-- 배포 자동화 -->
<target name="War 생성하기">
<war destfile="${ant.project.name}.war" webxml="web/WEB-INF/web.xml">
<lib dir="web/WEB-INF/lib" />
<classes dir="build/classes" />
<fileset dir="web" />
</war>
</target>
<target name="Tomcat에 배포하기" depends="War 생성하기">
<deploy url="${url}" username="${username}" password="${password}" path="/${ant.project.name}" war="${ant.project.name}.war" update="true" />
<delete file="${ant.project.name}.war"/>
</target>
</project>
위 빌드파일에서 사용할 프로퍼티 파일이 한 개 있는데, 그안에 2번에서 확인했었던, tomcat manager의 url과 1번에서 생성한 username, password를 적어줍니다. 그러면 그 값을 참조하여, deploy라는 task에서 사용하게 됩니다.
ant로 시작하는 EL은 ant에서 기본으로 제공하는 속성으로 프로퍼티 파일에 등록하지 않아도 사용할 수 있는 값들입니다. 이름을 보면 어떤 값이 들어갈지 직관적으로 알 수 있습니다.
deploy라는 task를 사용하기 위해서(ant에서 기본으로 제공하는 task가 아닙니다.), taskdef를 사용하여 tomcat deployer에서 제공하는 task를 사용할 수 있도록 등록해 두었습니다.
또한 tomcat deployer가 참조하는 라이브러리를 사용할 수 있도록 path 엘리먼트 안에 <fileset dir="${ant.home}/lib" /> 을 추가하였습니다.
배포한 다음에는 로컬에 생성한 war파일을 삭제하기 위해 delete task를 사용했습니다.
5. Ant target 사용하기
Eclipse에서 Ant view를 열고 위에서 작성한 build.xml 파일을 불러 옵니다.
그 다음 원하는 target를 더블클릭하여 실행하면 됩니다.