설명에서 보듯이 java+ant를 쓰면 좀 우월하다. make를 사용하면 컴파일할 java소스를 명시해줘야하지만 이건 디렉토리만 잡아줘도 알아서 컴파일다 되고 jar파일 만들때도 옵션을 적당히만 줘도 잘 만들어준다.
인터넷에서 삽질해서 작업중인 프로젝트에서 사용하는 ant스크립트이다(처음 작성해 보는거라서 삽질좀 했다). 후에 적절히 참고해서 써야지
<?xml version="1.0" encoding="UTF-8"?>
<project name="ExamplePackage" default="dist">
<property name="src" location="src;../CursCommon/src;../PackageManager/src;../PackageManagerDescriptions/src;../Utilities/src" />
<!-- ant로 컴파일한 class파일이 들어가는 디렉토 -->
<property name="bin" location="build" />
<property name="dist" location="dist" />
<property name="junit" value="/opt/eclipse/plugins/org.junit_3.8.2.v20090203-1005/junit.jar" />
<!-- 예제 패키지 이름 정의. 디렉토리도 같은 이름으로 한다 -->
<property name="aircon" value="s25a" />
<property name="contemp" value="ct" />
<property name="tempSensor" value="huts" />
<target name="init" description="필요한 디렉토리를 생성합니다.">
<mkdir dir="${bin}"></mkdir>
<mkdir dir="${dist}"></mkdir>
</target>
<target name="clean" description="${build}와 ${dist} 디렉토리 지우기">
<delete dir="${bin}"></delete>
<delete dir="${dist}"></delete>
</target>
<target name="dist-clean" description="패키지만 삭제">
<delete dir="${dist}"></delete>
</target>
<target name="compile" depends="init" description="소스파일을 컴파일해서 ${bin}에 넣는다">
<javac srcdir="${src}"
destdir="${bin}" includes="**/*.java"
classpath="lib/log4j-1.2.15.jar;lib/NAIE.jar;${junit}" />
</target>
<target name="dist" depends="aircon, contemp, tempSensor" description="모든 예제 서비스를 컴파일한다">
</target>
<target name="aircon" depends="compile" description="에어콘 패키지를 컴파일해서 패키지로 만든다">
<!-- jar파일로 일단 묶기 -->
<jar destfile="${dist}/${aircon}-bin.jar" basedir="${bin}"
includes="org/foo/bar/service/**, com/samsung/elec/aircon/**" />
<!-- 패키지파일로 묶을 준비하기 -->
<move file="${dist}/${aircon}-bin.jar" todir="${aircon}" />
<!-- 기존 패키지 파일 삭제 -->
<!-- 패키지 파일 이름 -->
<property name="aircon-pkg" value="${aircon}/${aircon}.zip" />
<delete file="${aircon-pkg}" />
<!-- zip으로 압축해서 패키지 파일 만들기 -->
<zip destfile="${aircon-pkg}">
<zipfileset dir="${aircon}" includes="**/*" excludes=".svn" />
</zip>
<!-- 패키지파일만 dist로 옮기기 -->
<copy file="${aircon-pkg}" todir="${dist}" />
</target>
<target name="tempSensor" depends="compile" description="온도센서 패키지를 컴파일해서 패키지로 만든다">
<!-- jar파일로 일단 묶기 -->
<jar destfile="${dist}/${tempSensor}-bin.jar" basedir="${bin}"
includes="org/foo/bar/service/**, net/hybus/usn/temperature/**" />
<!-- 패키지파일로 묶을 준비하기 -->
<move file="${dist}/${tempSensor}-bin.jar" todir="${tempSensor}" />
<!-- 기존 패키지 파일 삭제 -->
<!-- 패키지 파일 이름 -->
<property name="tempSensor-pkg" value="${tempSensor}/${tempSensor}.zip" />
<delete file="${tempSensor-pkg}" />
<!-- zip으로 압축해서 패키지 파일 만들기 -->
<zip destfile="${tempSensor-pkg}">
<zipfileset dir="${tempSensor}" includes="**/*" excludes=".svn" />
</zip>
<!-- 패키지파일만 dist로 옮기기 -->
<copy file="${tempSensor-pkg}" todir="${dist}" />
</target>
<target name="contemp" depends="compile" description="온도조절 서비스를 컴파일해서 패키지로 만든다">
<!-- jar파일로 일단 묶기 -->
<jar destfile="${dist}/${contemp}-bin.jar" basedir="${bin}"
includes="org/foo/bar/service/**, lab/bar/service/contemp/**" />
<!-- 패키지파일로 묶을 준비하기 -->
<move file="${dist}/${contemp}-bin.jar" todir="${contemp}" />
<!-- 기존 패키지 파일 삭제 -->
<!-- 패키지 파일 이름 -->
<property name="contemp-pkg" value="${contemp}/${contemp}.zip" />
<delete file="${contemp-pkg}" />
<!-- zip으로 압축해서 패키지 파일 만들기 -->
<zip destfile="${contemp-pkg}">
<zipfileset dir="${contemp}" includes="**/*" excludes=".svn" />
</zip>
<!-- 패키지파일만 dist로 옮기기 -->
<copy file="${contemp-pkg}" todir="${dist}" />
</target>
</project>