๊ทธ๋์ ์๋์ ๊ธ์ ์ด์ ๊ฐ์ ์ํฉ์์ ์ฐพ์๋ณด๊ณ ์๋ํ๋ฉฐ ์๊ฒ ๋ ๊ฒ๊ณผ ํด๊ฒฐํ๋ ์๋ฌ๋ฅผ ๊ธฐ๋กํ ๊ฒ์ด๋ค.
build๋ฅผ ํ๋ ค๊ณ gradle์ ์ฐพ๊ณ ์์๋๋ฐ ์๋ฌด๋ฆฌ ๋ด๋ build.xml๋ง ์กด์ฌํ๋ค. ์ฐพ์๋ณด๋ Ant๋ฅผ ์ฌ์ฉํด์ ๋น๋๋ฅผ ํด์ผ ํ๋ค๊ณ ํ๋ค.
Ant๋ Gradle์ด๋ Maven๊ณผ๋ ๋ค๋ฅด๊ฒ XML ๊ธฐ๋ฐ์ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
View โ Tool Windows โ Ant Build๋ฅผ ์ ํCtrl + Shift + A (Cmd + Shift + A on Mac) ๋ฅผ ๋๋ฅด๊ณ "Ant Build" ๊ฒ์ ํ ์คํbuild.xml ํ์ผ ์ถ๊ฐAnt Build ์ฐฝ์ด ์ด๋ฆฌ๋ฉด ์ผ์ชฝ ์๋จ์ โ(Add) ๋ฒํผ ํด๋ฆญbuild.xml ํ์ผ์ด ์๋ ํ๋ก์ ํธ ๋ฃจํธ ํด๋์์ ์ ํAnt Build ์ฐฝ์์ jar ๋๋ build ํ๊ฒ์ ์ ํ ํ ์คํ ๋ฒํผ(โถ) ํด๋ฆญ๋น๋๋ฅผ ํด์ jar๋ฅผ ๋ง๋ค์์ง๋ง ์ด jar๊ฐ ์ด๋์ ์์ฑ๋์๋์ง, ๋ฌด์์ ๋ฐํ์ผ๋ก ๋น๋๋ฅผ ํ๋์ง ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๊ณ ์์๋ค.
๊ทธ๋์ build.xml์ ํด์ํด๋ณด๊ธฐ๋ก ํ๋ค.
<target name="jar" depends="compile">
<mkdir dir="dist"/>
<jar destfile="dist/myproject.jar" basedir="build/classes"/>
</target>
jar ํ๊ฒ์ ์ฐพ๋๋ค.mkdir ํ๊ทธ๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ dist ๋ผ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ basedir์ ์ ์๋์ด ์๋ build/classes ํด๋ ์๋์ ์๋ ์ฝ๋๋ฅผdestfile์ ์ ์๋์ด ์๋ dist ํด๋ ์๋์ myproject.jar ๋ผ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ด ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.todir๊ณผ basedir์ด ์๋ ๊ฒฝ์ฐ<target name="jar" depends="compile">
<mkdir dir="output"/>
<copy todir="output">
<fileset dir="build/classes"/>
</copy>
<jar destfile="output/app.jar" basedir="output"/>
</target>
todir="output" โ output/ ํด๋๋ก "build/classes" ์ ์๋ ํด๋์ค ํ์ผ์๋ณต์ฌbasedir="output" โ output/์ ๊ธฐ์ค์ผ๋ก JAR ์์ฑoutput/app.jar ํ์ผ์ด ์์ฑ๋จ๊ทธ๋ฐ๋ฐ ๋ด ๊ฒฝ์ฐ์๋ ${} ๋ฌธ๋ฒ์ ํตํด์ ๋ณ์๋ช
์ ์ ์ํ๊ณ ์์๋ค.
${๋ณ์๋ช
} ์์ ํด๋น ๋ณ์๋
<property> ํ๊ทธ์์ ์ ์ํ๊ฑฐ๋, ๐ 1. build.xml ๋ด๋ถ์์ ์ ์๋ ๊ฒฝ์ฐ
<project name="MyProject" default="jar" basedir=".">
<property name="projectName" value="myproject_svc"/>
<property name="dist" value="target/dist"/>
<property name="dest" value="target/dest"/>
</project>
name ์์ฑ์ผ๋ก ํ์ผ ๋ด๋ถ์์๋ ์ฌ์ฉํ์ง๋ง ์ค์ ๊ฐ์ value ์ด๋ค.
๐ 2. ์ธ๋ถ build.properties ํ์ผ์์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ
build.xml ๋ด๋ถ์์ ์์ฑ์ ์ ์ํ์ง ์์๋ค๋ฉด, ์ธ๋ถ ํ์ผ์์ ๋ก๋๋ ์๋ ์์ด.
build.xml ์์ ์ด์ ๊ฐ์ด ์ ์ํ๊ณ ์๋ค๋ฉด build.properties ์ ์์ฑ์ ์ ์ํด๋ ๊ฒ์ด๋ค.
<property file="build.properties"/>
build.properties
projectName=myproject_svc
dist=target/dist
dest=target/dest
build.xml ์ ์ดํด๋ณด๋ฉฐ ๋ฌธ๋ฒ ์ ๋ฆฌํ๊ธฐjar ํ๊ฒ
<target name="jar" depends="clean, compile">
<copy todir="${dist}">
<fileset dir="src">
<include name="**/*.yml" />
<include name="**/*.xml" />
</fileset>
</copy>
<jar basedir="${dist}" destfile="${dest}/${projectName}.jar" />
</target>
<target name="jar" depends="clean, compile"> : clean, compile ํ๊ฒ์ ๋จผ์ ์คํ ํ jar ํ๊ฒ์ ์คํํ๊ฒ ๋ค๋ ๋ป์ด๋ค.clean โ ๊ธฐ์กด ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ญ์ (์: dist ํด๋๋ .class ํ์ผ ์ญ์ )compile โ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ์ฌ .class ํ์ผ ์์ฑ<copy todir="${dist}">: ${dist} ๋๋ ํ ๋ฆฌ์ ์๋์ ๋ด์ฉ์ copy ํ๊ฒ ๋ค๋ ๋ป์ด๋ค.<fileset dir="src">: src ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ ๋ชจ๋๊ฐ ๊ทธ ๋์์ด๋ผ๋ ๋ป์ด๋ค.<include name="**/*.yml" />, <include name="**/*.xml" /> ํ์ผ๋ ํฌํจํ๊ฒ ๋ค๋ ๋ป์ด๋ค.clean ํ๊ฒ
<target name="clean">
<delete dir="${dist}" />
<delete dir="${dest}" />
</target>
<delete dir="${dist}" />: ${dist} ๋๋ ํ ๋ฆฌ ์ญ์ prepare ํ๊ฒ
<target name="clean">
<mkdir dir="${dist}" />
<mkdir dir="${dest}" />
</target>
<mkdir dir="${dist}" />: ${dist} ๋๋ ํ ๋ฆฌ ์์ฑcompile ํ๊ฒ
<target name="compile" depends="prepare">
<javac srcdir="src" destdir="${dist}" source="17" encoding="UTF-8" debug="true">
<classpath refid="op_userclass_lib" />
</javac>
</target>
javac๋ java compiler์ ์ค๋ง์ด๋ค. ๊ธฐ์ตํ์build.xml์์ ์ฌ์ฉํ๋ javac๋ Ant ๋น๋ ๋๊ตฌ์ ์ผ๋ถ๋ก, Ant๊ฐ ์๋์ผ๋ก Java ์ปดํ์ผ ์์
์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค.<classpath refid="op_userclass_lib" /> ์ด ๋ถ๋ถ์ ์ปดํ์ผ ์ ์ฌ์ฉ๋ ํด๋์คํจ์ค๋ฅผ ์ค์ ํ๋ ๋ถ๋ถ refid="op_userclass_lib"๋ ํด๋์คํจ์ค๋ฅผ op_userclass_lib๋ผ๋ ์์ด๋๋ก ์ง์ ๋ ํด๋์คํจ์ค ์ค์ ์ ์ฐธ์กฐํ๋ค๋ ์๋ฏธ์ โ ๊ทธ๋์ ์๋์ฒ๋ผ path ํ๊ทธ๋ก ์ ์๋ฅผ ํด๋ ๊ฒ ๋ถ๋ช
์์ ๊ฒ์path ํ๊ทธ
<path id="op_userclass_lib">
<fileset dir="libs">
<include name="**/*.jar" />
</fileset>
</path>
์ฆ, ๋น๋ ๊ณผ์ ์ ์ด๋ ๊ฒ ์งํ:
1๏ธโฃ clean ์คํ โ ๊ธฐ์กด ๋๋ ํ ๋ฆฌ ์ญ์
2๏ธโฃ prepare ์คํ โ ๋๋ ํ ๋ฆฌ ์์ฑ
3๏ธโฃ compile ์คํ โ ์์ค ์ฝ๋ ์ปดํ์ผ (.java โ .class)
4๏ธโฃ jar ์คํ โ ์ปดํ์ผ๋ .class ํ์ผ ๋ฐ ์ค์ ํ์ผ๋ค์ .jar๋ก ๋ฌถ์