์ฌ๋ฌ Maven ํ๋ก์ ํธ๊ฐ ์๊ณ ๋ชจ๋ ๋น์ทํ ๊ตฌ์ฑ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด
์ ์ฌํ ๊ตฌ์ฑ์ ์ ๊ฑฐํ๊ณ ๋ถ๋ชจ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋ฆฌํฉํ ๋ง ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋น์ ์ดํด์ผ ํ ๊ฒ์ ๋น์ ์ Maven ํ๋ก์ ํธ๊ฐ ์์ ํ๋ก์ ํธ๋ฅผ ์์ ํ ์ ์๋๋กํ๋ ๊ฒ๋ฟ์
๋๋ค.
์ด๋ฌํ ์ค์ ์ ๋ชจ๋ ํ๋ก์ ํธ์ ์ ์ฉ๋ฉ๋๋ค.
ํจ๊ป ๊ตฌ์ถ๋๊ฑฐ๋ ์ฒ๋ฆฌ๋๋ ํ๋ก์ ํธ ๊ทธ๋ฃน์ด์๋ ๊ฒฝ์ฐ
์์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ํด๋น ์์ ํ๋ก์ ํธ์์ ํด๋น ํ๋ก์ ํธ๋ฅผ ๋ชจ๋๋ก ์ ์ธํ๋๋ก ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ฒํจ์ผ๋ก์จ, ๋น์ ์ ๋จ์ง ๋ถ๋ชจ๋ฅผ buildํ๋ฉด๋๊ณ ๋๋จธ์ง๋ ๋ค๋ฐ๋ผ ์ฌ ๊ฒ์
๋๋ค.
๋ฌผ๋ก Project Inheritance์ Project Aggregation์ ๋ ๋ค ์ ์ฉํ ์ ์์ต๋๋ค.
์ฆ, ๋ชจ๋์์ ๋ถ๋ชจ ํ๋ก์ ํธ๋ฅผ ์ง์ ํ๋๋กํ๊ณ ๋์์ ํด๋น ๋ถ๋ชจ ํ๋ก์ ํธ์์ ํด๋น Maven ํ๋ก์ ํธ๋ฅผ ๋ชจ๋๋ก ์ง์ ํ๋๋ก ํ ์ ์์ต๋๋ค.
์ธ ๊ฐ์ง ๊ท์น์ ๋ชจ๋ ์ ์ฉํ๋ฉด๋ฉ๋๋ค.
- ๋ถ๋ชจ POM์ ๋ชจ๋ ํ์ POM์ ์ง์ ํฉ๋๋ค.
- ์์ POM ํจํค์ง์ ๊ฐ "pom"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค.
- ์์ POM์ ๋ชจ๋์ ๋๋ ํ ๋ฆฌ (ํ์ POM)๋ฅผ ์ง์ ํ์ญ์์ค.
The Scenario(์๋๋ฆฌ์ค)
์ด์ ์ original artifact POM์ ๋ค์ ๊ฐ์ํ ๋,
com.mycompany.app:my-app:1
's POM
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
</project>
com.mycompany.app:my-module:1
's POM
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
and this directory structure(๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ)
.
|-- my-module
| `-- pom.xml
`-- parent
`-- pom.xml
The Solution(ํด๊ฒฐ์ฑ
)
ํ๋ก์ ํธ ์์๊ณผ ์ง๊ณ๋ฅผ ๋ชจ๋ ์ํํ๋ ค๋ฉด ์ธ ๊ฐ์ง ๊ท์น ๋ง ์ ์ฉํ๋ฉด๋ฉ๋๋ค.
com.mycompany.app:my-app:1'
s POM
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>../my-module</module>
</modules>
</project>
com.mycompany.app:my-module:1'
s POM
<project>
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-module</artifactId>
</project>
์ฐธ๊ณ : ์์์ POM ์์ฒด์ ์ฌ์ฉ ๋ ๊ฒ๊ณผ ๋์ผํ ์์ ์ ๋ต์ ํ๋กํ์ผํฉ๋๋ค.