ํ๋ก์ ํธ ์ค๋ช ๊ฐ์ฒด ๋ชจ๋ธ
Maven์ด ์ฒ์์ ํ์คํํ ๊ฒ ์ค ํ๋๋ ํ๋ก์ ํธ ์ค๋ช ์ด์์ต๋๋ค. Maven ์ด์ ์๋ ๊ฐ IDE์ ๊ณ ์ ํ ํ๋ก์ ํธ ํ์ผ์ด ์์๋๋ฐ, ์ฌ๊ธฐ์๋ ํ๋ก์ ํธ ๋ฐ ํด๋น ์ด์ ๋ธ๋ฆฌ์ ๋ํ ์ ๋ณด(์ข ์ข ์ด์ง ํ์)๊ฐ ์ ์ฅ๋์์ต๋๋ค.
Maven์ ๋ค์ํ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๊ฐ ๋ฌด์์ธ์ง, ๋น๋ ๋ฐฉ๋ฒ ๋ฐ ์ข ์์ฑ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๋ XML ๊ธฐ๋ฐ์ ๋ฒ์ฉ ๊ฐ๋ฐฉํ ํ์ค์ ์ ์ํ์ต๋๋ค. ํ๋ก์ ํธ ์ค๋ช ์ ์ผ๋ฐ์ ์ผ๋ก pom.xml ์ด๋ผ๋ ๋จ์ผ ํ์ผ์ ํฌํจ๋ฉ๋๋ค .
์์ pom.xml ํ์ผ :
<ํ๋ก์ ํธ xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example.com</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<์ข ์์ฑ> <
์ข ์์ฑ>
<groupId>commons-io </groupId>
<artifactId>commons-io</artifactId>
<๋ฒ์ >2.6</๋ฒ์ >
</์ข ์์ฑ>
</์ข ์์ฑ>
</ํ๋ก์ ํธ>
์ด ์์๋ ๋ค์ ์ธ ๊ฐ์ง๊ฐ ๊ธฐ๋ก๋์ด ์์ต๋๋ค.
- maven ํ๋ก์ ํธ ํ์ค์ ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ ํ๋์์ ๋๋ค.
- ํ๋ก์ ํธ ์์ฒด์ ๋ํ ์ ๋ณด๋ ๋นจ๊ฐ์์ ๋๋ค.
- ์ฌ์ฉ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ ๋ณด๋ ๋ น์์ ๋๋ค.
pom ํ์ผ ์ฅ์น์ ๋ํด ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฉ์ด๋ธ ํ๋ก์ ํธ ๊ตฌ์กฐ
๊ทธ๋ฆฌ๊ณ ์ฆ์ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ง์ง๋ง ์์์ ์ด์ํ ์ ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์์ต๋๊น? ํ๋ก์ ํธ ์ฝ๋ ์์ฒด์ ๋ํ ์ ๋ณด๋ ํฌํจํ์ง ์์ต๋๋ค! Java ํ์ผ, ๋ฆฌ์์ค, ์์ฑ ํ์ผ, html, ๋น๋ ์คํฌ๋ฆฝํธ ๋ฑ์ด ์ ์ฅ๋๋ ์์น์ ๋ํ ๋จ์ด๊ฐ ์์ต๋๋ค.
๋๋ต์ ๊ฐ๋จํฉ๋๋ค. Maven์ ํ๋ก์ ํธ ๋์์ธ์ ํ์คํํ์ต๋๋ค. ํ๋ก์ ํธ ๋ด์์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ช ๊ฐ์ง ์ต์ ์ด ์์ผ๋ฉฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๊ตฌ์กฐ๋ ํ์ค IDEA ํ๋ก์ ํธ ์ดํ์๋ ์ฝ๊ฐ ํน์ดํ์ง๋ง ๋ณดํธ์ ์ ๋๋ค. ์ผ์์์ ์ ํ๊ฒ ๋ ํ๋ก์ ํธ์ 90%๊ฐ ์ด ํด๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๊ฒ์ ๋๋ค .
Maven ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด(IDEA๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฝ์์ ์ฌ์ฉํ์ฌ) ์ง์ ๋ ํ์์ ์ทจํฉ๋๋ค. ์ฌ๊ธฐ์์ ๋ชจ๋ ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ด ์๋ค.
์ง์ํ์ จ๊ฒ ์ง๋ง src ํด๋์๋ ํ๋ก์ ํธ์ ์์ค ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๊ฐ์ ํ์ ํด๋๊ฐ ์์ต๋๋ค: main ๋ฐ test .
/src/main/java ํด๋๋ ํ๋ก์ ํธ์ ์๋ ๋ชจ๋ Java ํด๋์ค์ ๋ฃจํธ์ ๋๋ค. com.codegym.Cat ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ /src/main/java /com/codegym /Cat.java ํด๋ ์ ์์ต๋๋ค . ํ ์คํธ ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ /src/main/resources ํด๋์ ์ ์ฅํด์ผ ํฉ๋๋ค .
/src/test ํด๋ ์ ๊ตฌ์กฐ๋ /src/main ํด๋ ์ ๊ตฌ์กฐ์ ์ ์ฌ ํ์ง๋ง ํ ์คํธ์ ํด๋น ๋ฆฌ์์ค๋ฅผ ํฌํจํฉ๋๋ค. Maven ์์ฒด๋ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ ํ์ํ ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ง๋ง ์ด์ ๋ํด์๋ ๋ณ๋์ ๊ฐ์์์ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
ํ๋ก์ ํธ์ /target ํด๋๋ ์์ผ๋ฉฐ Maven์ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ํ ํ๋ก์ ํธ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์๋ ์ค์ํ ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ด ํด๋์๋ ์๋ฌด ๊ฒ๋ ์ ์ฅ๋์ง ์์ต๋๋ค.
/target ํด๋ ์ ๋ ๋ฒ์งธ ๋ชฉ์ ์ ์ค๊ฐ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๋ ๊ฒ์ ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ Maven์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๋ค์ ๋น๋ํ ์ ์์ผ๋ฏ๋ก ๋น๋ ์๊ฐ์ด ๋ช ๋ฐฐ ๋นจ๋ผ์ง๋๋ค.
๊ธ์, ์ผ์ดํฌ์ ์ฒด๋ฆฌ์ฒ๋ผ - ํ๋ก์ ํธ์ ๋งจ ๋ฃจํธ์๋ pom.xml ํ์ผ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์๋์์ ๋ ผ์ํ ํ๋ก์ ํธ์ ๋ํ ๋ชจ๋ ํ์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ฅ์น pom.xml
์ฐ์ pom ํ์ผ์ xml์ด๋ฏ๋ก ํ์ค ํค๋ ๋ฐ ๋ค์์คํ์ด์ค ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค. ์ด๊ฒ์ ์์ ํ XML ํ์ค์ ๊ดํ ๊ฒ์ด๋ฏ๋ก ์์ธํ ๋ด์ฉ์ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค. ์ด๊ฒ์ ๋ค์์ ์๋ฏธํฉ๋๋ค.
<ํ๋ก์ ํธ xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
โฆ
</ํ๋ก์ ํธ>
๋ํ ์ผ๋ฐ์ ์ผ๋ก <project> ํ๊ทธ ๋ด๋ถ์ ์ฒซ ๋ฒ์งธ ์ค์ pom-file ํ์ค ๋ฒ์ ์ ๋ํ ์ค๋ช ์ ๋๋ค. ๊ฑฐ์ ํญ์ 4.0์ ๋๋ค. ์ด๊ฒ ์ญ์ ์ฐ๋ฆฌ์๊ฒ ๊ด์ฌ์ด ์์ต๋๋ค.
๊ด์ฌ ์๋ ์ฒซ ๋ฒ์งธ ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<groupId>com.sample.app</groupId>
<artifactId>new-app</artifactId>
<version>1.0-SNAPSHOT</version>
์ฐ๋ฆฌ๊ฐ Maven ํ์ค์์ ์ค๋ช ํ๋ ๊ฒ(ํ๋ก๊ทธ๋จ, ํ๋ก์ ํธ, ๋ชจ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ)์ ๋ค์ ํ ๋ฒ ์ดํดํ์ง ์๊ธฐ ์ํด ์ด๊ฒ์ ๋ชจ๋ ์ํฐํฉํธ ๋ผ๋ ๋จ์ด๋ผ๊ณ ํฉ๋๋ค . Maven ์ ์์๋ฅผ ๊ฑฐ๋ถํ ์ ์๋ ๊ฒ์ ํ์คํ์ ๋ํ ์ฌ๋์ ๋๋ค.
ํ์๋๋ ์ธ ๊ฐ์ ํ๊ทธ๋ ๋ค์์ ์๋ฏธํฉ๋๋ค.
- groupId - ๋๋ฉ์ธ ์ด๋ฆ์ด ์ถ๊ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํ ํจํค์ง.
- artifactId โ ๊ณ ์ ํ ๋ฌธ์์ด ํค(ํ๋ก์ ํธ ID)
- ๋ฒ์ - ํ๋ก์ ํธ์ ๋ฒ์ .
์ด ์ธ ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ ๋ชจ๋ ์ํฐํฉํธ๋ฅผ ๋ช ํํ๊ฒ ์ค๋ช ํ๊ธฐ ์ ์ถฉ๋ถํฉ๋๋ค .
๋ํ ํ๋ก์ ํธ ์ค๋ช ๋ค์๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ์ํฐํฉํธ(๋ผ์ด๋ธ๋ฌ๋ฆฌ) ๋ชฉ๋ก์ด ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
<์ข ์์ฑ>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version> </
์ข ์์ฑ> </์ข ์์ฑ
>
์ด ์์์๋ commons-io ํจํค์ง ๋ฒ์ 2.6์ commons-io ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํฉ๋๋ค.
๋น๋ ์ Maven์ ๊ธ๋ก๋ฒ ์ ์ฅ์์์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ํ๋ก์ ํธ์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , Maven๋ง์ด ์ด๊ฒ์ ํ ์ ์๋ ๊ฒ์ ์๋๋๋ค.
IDEA๊ฐ Maven๊ณผ ์๋ํ๋ ๋ฐฉ์
Intellij IDEA๋ Maven๊ณผ ํจ๊ป ์์ ํ๋ ๋ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ ๋ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ์ด๊ณ , ์ง์ ๋ง๋ค๊ณ , ๋ค์ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ , ํฌํจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฒฝํ๊ฒ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค.
ํ๋์ ์์ฒด ๋ด์ฅ Maven๋ ์์์ง๋ง ์ฌ์ ํ ์ง์ ์ค์นํ๊ณ ๊ตฌ์ฑํ ์ ์์ด์ผ ํ๋ฏ๋ก IDEA์ ์ด ๊ธฐ๋ฅ์ ์์์ ์ธ๊ธํ์ง ์์์ต๋๋ค. ์ด๋ก ์ ์ผ๋ก IDEA๋ ๋ Maven ๊ฐ์ ์ถฉ๋์ด ์์ ์ ์์ผ๋ฏ๋ก ๋ ๊ฐ์ง๊ฐ ์๋ค๋ ๊ฒ์ ์์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
IDEA์์ ์ Maven ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ:
ํ์ผ > ์ ํ๋ก์ ํธ ๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ผ์ชฝ์์ ๋ฉ๋ด ํญ๋ชฉ ์ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค .
๋ช ๊ฐ์ง ์ฌํญ์ ๋ช ํํ ํฉ์๋ค.
- ํ๋ก์ ํธ ์ด๋ฆ;
- ํ๋ก์ ํธ ํด๋;
- ํ๋ก์ ํธ ์ธ์ด๋ Java์ ๋๋ค.
- ํ๋ก์ ํธ ์ ํ์ Maven์ ๋๋ค.
ํ๋จ์ ๊ณ ๊ธ ์ค์ ์น์ ์์ IDEA๋ ์ ํ๋ก์ ํธ์ goupID, artifactID ๋ฐ ๋ฒ์ ์ ์ง์ ํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ๋์ค์ ์ธ์ ๋ ์ง ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ ์๋ ๊ฒ ์ค์์ ์ ํํ๊ฑฐ๋ ์ง์ ์ ๋ ฅํ์ญ์์ค.
๋ค์์ผ๋ก ํ์ํ ์์น์ ํ๋ก์ ํธ๋ฅผ ํ์ค์ผ๋ก ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
ํด๋์ค์ ํจํค์ง๋ java ํด๋์ ์์ฑ๋์ด์ผ ํฉ๋๋ค. ์ด์ ๋ํด์๋ ์ด๋ฏธ ์ด์ผ๊ธฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ณ์ ์งํํ ์ค๋น๊ฐ ๋์์ง๋ง ์กฐ๊ธ "๊ฑด๋๋ด" ์ค์ํ ๋ฌธ์ ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
GO TO FULL VERSION