Build Tools
๋น๋ ๋๊ตฌ๋, ๋น๋ ์๋ํ๋ฅผ ํตํด ์คํ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ(์ ํ๋ฆฌ์ผ์ด์ )์ ๋ง๋ค์ด ์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋งํ๋ค.
๋น๋ : ์์ค์ฝ๋ ํ์ผ๋ค์ ์ปดํจํฐ์์ ์คํํ ์ ์๋ ์ํํธ์จ์ด๋ก ๋ณํํ๋ ์ผ๋ จ์ ๊ณผ์ ์ผ๋ก, compile, test, deploy ๋ฑ ๋ชจ๋ ๊ณผ์ ์ ์งํฉ
๋ํ์ ์ธ ๋น๋ ๋๊ตฌ ์ข ๋ฅ์๋ Ant, Maven, Gradle์ด ์๋ค.
Ant
Ant์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๊ฐ๋ฐ์๊ฐ ์์ ๋กญ๊ฒ ๋น๋ ๋จ์(target)์ ์ง์ ํ๊ณ ๋น๋ ๋จ์๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์์ ๋กญ๊ฒ ์ค์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์์ ๋๊ฐ ๋๋ค๋ ๊ฒ์ ์ ํ์ฉํ ๊ฒฝ์ฐ ์ข์ ๋๊ตฌ๊ฐ ๋ ์ ์์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ ๋ฌผ๋จ์ง๋ก ์ ๋ฝํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
XML ๊ธฐ๋ฐ ๋น๋ ์คํฌ๋ฆฝํธ(
build.xml
)๊ท์น์ด ์์
์ ์ฐจ์
์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ์์ ๊ฐ๊ฐ์ target์ ๋ํ ์์กด์ฑ์ ์ง์ ์ ์ ํด์ค์ผํ๋ค.
๋จ์
์ ์ฐ์ฑ์ด ๋์ง๋ง, ํ๋ก์ ํธ๊ฐ ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ build ๊ณผ์ ์ ์ดํด๊ฐ ์ด๋ ต๋ค
XML, Remote Repository๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค
์คํฌ๋ฆฝํธ์ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๋ค.
Apache Maven์ ์๋ฐ์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ๋๊ตฌ๋ก Apache Ant์ ๋์์ผ๋ก ๋ง๋ค์ด์ง
ํ๋ก์ ํธ์ ์ ์ฒด์ ์ธ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ๋๊ตฌ
pom.xml
ํ์ผ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํด ๋๋ฉด, ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๋ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊น์ง ๊ด๋ฆฌํ์ฌ, ์๋์ผ๋ก ๋ค์ด๋ก๋ ๋ฐ์์ค๊ฐ๋จํ ์ค์ ์ ํตํ ๋ฐฐํฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ก ์ข ์๋์ด์์ ๊ฒฝ์ฐ XML์ด ๋ณต์กํด์ง๋ฉฐ, ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ์๋ ์ข์ง๋ง, ํ๋ก์ฐ๋ ์กฐ๊ฑด๋ถ ์ํฉ์ ํํํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์๋ค.
Gradle
ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋น๋ ๋๊ตฌ
Gradle์ ํ๋ก์ ํธ๋ฅผ ์ํ ๋ฒ์ฉ ๋น๋ ๋๊ตฌ์ด๋ค. ์๋๋ก์ด๋ ์คํ๋์ค์์ ๊ธฐ๋ณธ ๋น๋์์คํ ์ผ๋ก ์ฌ์ฉ
Ant์ ์ ์ฐ์ฑ(๊ธฐ๋ณธ์ ์ธ ๋น๋ ๋๊ตฌ ๊ธฐ๋ฅ)๊ณผ ํจ๊ณผ์ ์ธ ๋น๋ ํด์ธ Maven์ ํธ๋ฆฌ์ฑ(์์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ)์ ์กฐํฉํ์ฌ ๋ง์ ์คํ์์ค ํ๋ก์ ํธ์ ๋น๋ ์์คํ ์ผ๋ก ์ฑํ๋๊ณ ์๋ค
xml ์ธ์ด์ ๋ํ ๋จ์ ๋ Groovy ์ธ์ด(JVM ํ๊ฒฝ์ธ์ด)๋ฅผ ์ฌ์ฉํด ํด๊ฒฐ
Gradle์ Groovy DSL๋ก ์์ฑํ๋ฉฐ, ์ค์ ์ ๋ณด๋ ๋ณ์์ ๊ฐ์ ๋ฃ๋ ํํ๋ก, ๋์ ์ธ ๋น๋๋ Groovy ์คํฌ๋ฆฝํธ๋ก Gradle์ฉ ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ๊ฑฐ๋ ์ง์ ์ฝ๋๋ฅผ ์งค ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ ํธ ํ์์ build.gradle
ํ์ผ๋ก ์์ฑ์ด ๋๋ฉฐ, ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์๋ค.
sourceCompatibility
: Java Versiondependencies
: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ๊ด๋ฆฌ
๋ง์ฝ ์ธํ ๋ฆฌ์ ์ด๋ก ํ๋ก์ ํธ ์คํ์์ Build and run์ด Gradle๋ก ๋์ด์์ผ๋ฉด, ์คํ ์๋๊ฐ ๋๋ฆฐ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก ์๋์ ๊ฐ์ด ์ค์ ์ intellij๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
![](./assets/แแ ณแแ ณแ แ ตแซแแ ฃแบ 2021-04-11 แแ ฉแแ ฎ 10.36.27.png)
๋ค์๊ณผ ๊ฐ์ด Gradle ์์ ์์กด์ฑ์ ํ์ธํ ์ ์๋ค.
CLI๋ก ๋น๋ํ๊ธฐ
๋ค์์ฒ๋ผ build๋ฅผ ์ํํ๋ฉด ํ๋ก์ ํธ ํ์์ build({project๋ช
}/build/
)๊ฐ ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
/builds/libs
ํ์์ jar
ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์์ผ๋ฉฐ,
๋ก ์คํ๋ง ์๋น์ค๋ฅผ ์คํํ ์ ์๋ค.
๋ง์ฝ์ ์์ฑ๋ ๋น๋๋ฅผ ์ง์ฐ๊ณ ์ถ์ผ๋ฉด gradlew clean
์ ์ํํ๋ฉด๋๋ค.
Gradle vs Maven
Maven์ Build๋ผ๋ ๋์ ์ธ ์์๋ฅผ XML๋ก ์ ์ํ๊ธฐ์ ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ง๋ค.
์ค์ ๋ด์ฉ์ด ๊ธธ์ด์ง๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง
์์กด ๊ด๊ณ๊ฐ ๋ณต์กํ ํ๋ก์ ํธ ์ค์ ํ๊ธฐ์ ๋ถ์ ์
์์ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ ๋ฉํฐ ๋ชจ๋ ๊ตฌํ
ํน์ ์ค์ ์ ์์์ ๋ชจ๋์์ ๊ณต์ ํ๊ธฐ ์ํด์๋ ๋ถ๋ชจ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ฌ ์์ํ๊ฒ ํด์ผํจ(์์์ ๋จ์ )
Gradle์ Groovy DSL์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋์ ์ธ ๋น๋๋ ๋น๋ ์คํฌ๋ฆฝํธ๋ก ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ๊ฑฐ๋ ์ง์ ์ฝ๋๋ฅผ ์งค ์ ์๋ค.
Configuration Injection ๋ฐฉ์์ ์ฌ์ฉํด ๊ณตํต ๋ชจ๋์ ์์ํด์ ์ฌ์ฉํ๋ ๋จ์ ์ปค๋ฒ
์ค์ ์ฃผ์ ์ ํ๋ก์ ํธ์ ์กฐ๊ฑด์ ํ์ธํ ์ ์์ด์ ํ๋ก์ ํธ๋ณ๋ก ์ฃผ์ ๋๋ ์ค์ ์ ๋ค๋ฅด๊ฒ ํ ์ ์๋ค.
์ฐธ๊ณ
Last updated