6.1 ํ๋ฌ๊ทธ์ธ ์๊ฐ
ํ์ค ๋ผ์ดํ์ฌ์ดํด์ Maven ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ผ๋ก ํฅ์๋ ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ฉด ํ์ค ์ฃผ๊ธฐ(์: ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ฐฐํฌ)์ ์ ๋จ๊ณ๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ๊ธฐ์กด ๋จ๊ณ๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค.
Maven์ ํ๋ฌ๊ทธ์ธ์ ํน๋ณํ ๊ฒ์ด ์๋๋ผ ๋ฐ๋๋ก ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ์์ฃผ ์ ํ๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ ํ๋ก์ ํธ ๋น๋์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ค์ ํ๋ ค๋ฉด pom.xml์ ํ์ํ ์ ๋ณด๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ "ํ๋ฌ๊ทธ์ธ"์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ข ์์ฑ๋งํผ์ด๋ ์ํฐํฉํธ์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ค๋ช ๋ฉ๋๋ค. ์ข ์์ฑ ์น์ ๋์ ํ๋ฌ๊ทธ์ธ, ์ข ์์ฑ ๋์ ํ๋ฌ๊ทธ์ธ, ๋ฆฌํฌ์งํ ๋ฆฌ ๋์ ํ๋ฌ๊ทธ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ, ๋ฆฌํฌ์งํ ๋ฆฌ - ํ๋ฌ๊ทธ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ.
์:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
pom.xml์์ ํ๋ฌ๊ทธ์ธ์ ์ ์ธํ๋ฉด ํ๋ฌ๊ทธ์ธ ๋ฒ์ ์ ์์ ํ๊ณ ํ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๋ค์ํ ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ๊ณ ๋จ๊ณ์ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค.
์ฆ, Maven์ ๋ชจ๋ ์์ ์ ์ํํ๋ ํน์ ํ๋ฌ๊ทธ์ธ์ ์คํํฉ๋๋ค. ์ฆ, ํ๋ก์ ํธ์ ํน์ ๋น๋์ ๋ํด Maven์ ๊ฐ๋ฅด์น๋ ค๋ฉด pom.xml์ ํ์ํ ๋จ๊ณ์์ ํ์ํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ํ๋ฌ๊ทธ์ธ์ ์์ํ๋ผ๋ ํ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค .
์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ์ ์๋ ๋งค์ฐ ๋ง์ต๋๋ค. maven์์ ์ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํ๊ณ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ด ์ํฉ์์ ๊ฐ๋ฐ์์ ์ฃผ์ ์๋ฌด๋ ๊ฐ์ฅ ์ ์ ํ ํ๋ฌ๊ทธ์ธ ์ธํธ๋ฅผ ์ฐพ์ ์ ์ฉํ๋ ๊ฒ ์ ๋๋ค .
6.2 ๋ผ์ดํ ์ฌ์ดํด๊ณผ ํ๋ฌ๊ทธ์ธ
๋งค์ฐ ์์ฃผ ํ๋ฌ๊ทธ์ธ์ ํน์ ๋จ๊ณ๋ฅผ ์คํํ๋ ๋์ ์ผ์ข ์ ์ฝ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ ์ผ๋ฐ Java ํด๋์ค(๋ฌผ๋ก ๊ธฐ๋ณธ ๋ฉ์๋๊ฐ ์์)๋ฅผ ์คํํ ์๋ ์์ต๋๋ค.
์:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.Main</mainClass>
<arguments>
<argument>first-argument</argument>
<argument>second-argument</argument>
</arguments>
</configuration>
</plugin>
์ผ๋ฐ์ ์ผ๋ก ํ๋ฌ๊ทธ์ธ์ ๋งค์ฐ ์ ์ฐํ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Maven ๊ฐ๋ฐ์์ ๋ชจ๋ ๊ณต์ ํ๋ฌ๊ทธ์ธ์ ๊ณต์ Maven ์น ์ฌ์ดํธ์ ๋งค์ฐ ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Apache Maven ํ๋ก์ ํธ ํ์ด์ง์ maven-compiler-plugin ์ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ์ ์ดํ๋ โโ๋ชจ๋ ๋ณ์ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ ๋ํ ์ ๋ณด๋ ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ ์ค์ํ ์ ๋ณด. ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ์๋ช ์ฃผ๊ธฐ์ ๋ค๋ฅธ ๋จ๊ณ์์ Maven์ ์ํด ํธ์ถ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค์ Java ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ช ํ๋ ํ๋ก์ ํธ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ (war) ๊ฐ๋ฐ์ ์ผ๋ฐ์ ์ธ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ์๋ช ์ฃผ๊ธฐ ๋จ๊ณ๋ฅผ ๊ฐ์ง๋๋ค.
๋๋ ์๋ฅผ ๋ค์ด "mvn test" ๋ช ๋ น์ด ์คํ๋๋ฉด ํ๋ก์ ํธ ์๋ช ์ฃผ๊ธฐ์ ์ ์ฒด ๋จ๊ณ๊ฐ ์์๋ฉ๋๋ค. "process-resources", "compile", "process-classes", "process-test" -์์โ, โํ ์คํธ-์ปดํ์ผโ, ํ ์คํธ. Maven์ด ํ์ํ๋ ๋ฉ์์ง์์ ์ด๋ฌํ ๋จ๊ณ์ ๋ํ ์ธ๊ธ์ ๋ณผ ์ ์์ต๋๋ค.
[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ codegym ---
[INFO] Surefire report directory: t:\ projects\codegym\target\surefire-reports
6.3 Maven์ ๋ชฉํ - ๋ชฉํ
๋ฉ์ด๋ธ์๋ ๋ชฉํ(goal)๋ผ๋ ๊ฒ๋ ์๋ค. goal์ Maven ์์ ๋์๊ณผ ๋น์ทํฉ๋๋ค. ์ฃผ์ ๋ชฉํ๋ ์ฃผ์ ๋จ๊ณ์ ์ผ์นํฉ๋๋ค.
- ํ์ธ;
- ์ฎ๋ค;
- ์ํ;
- ํจํค์ง;
- ํ์ธํ๋ค;
- ์ค์นํ๋ค;
- ๋ฐฐํฌํฉ๋๋ค.
ํ๋ก์ ํธ ์๋ช ์ฃผ๊ธฐ์ ๊ฐ ๋จ๊ณ์์ ์ฌ๋ฌ ๋ชฉํ(๋ชฉํ)๋ฅผ ํฌํจํ๋ ํน์ ํ๋ฌ๊ทธ์ธ(jar-library)์ด ํธ์ถ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด "maven-compiler-plugin" ํ๋ฌ๊ทธ์ธ์๋ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํ compiler:compile๊ณผ ํ ์คํธ ์ปดํ์ผ์ ์ํ compiler:testCompile์ ๋ ๋์์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ฑฐ์ ํ์ํ์ง ์์ง๋ง ๊ณต์์ ์ผ๋ก ๋จ๊ณ ๋ชฉ๋ก์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
ํน์ ๋จ๊ณ์์ ์ผ๋ถ ๋นํ์ค ์์ ์ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ pom.xml์ ์ ์ ํ ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>Name-plugin</artifactId>
<executions>
<execution>
<id>customTask</id>
<phase>generate-sources</phase>
<goals>
<goal>pluginGoal</goal>
</goals>
</execution>
</executions>
</plugin>
์ด ๊ฒฝ์ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํ๋ฌ๊ทธ์ธ "goal"์ ๋ชฉํ์ ๋ํ ํธ์ถ์ ํฌํจํด์ผ ํ๋ "์คํ/๋จ๊ณ" ๋จ๊ณ์ ์ด๋ฆ์ ํ๋ฌ๊ทธ์ธ์ ๋ํด ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด xml์ ๊ธฐ๋ฐ์ผ๋ก Java ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ "generate-sources" ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ์ด ๋จ๊ณ๋ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋ฐฐ์น๋๋ฉฐ ํ๋ก์ ํธ ์์ค์ ์ผ๋ถ๋ฅผ ์์ฑํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.