쩨이엠 개발 블로그

멀티폼 / 멀티프로젝트 만들기 (multi pom project) 본문

개발/intelliJ

멀티폼 / 멀티프로젝트 만들기 (multi pom project)

쩨이엠 2020. 4. 23. 16:26
728x90
반응형

프로젝트를 만들다 보니 같은 프로세스가 여기저기 흩어져 있어 멀티프로젝트 하나로 묶기로 했다

멀티프로젝트 혹은 멀티폼 형식 (multi project / multi pom)

 

되어있는 프로세스를 옮기는 거라 그래도 어렵진 않았지만 정리해두기

 

구조는

parent(root)

  • child1
    • src
    • pom.xml
  • child2
    • src
    • pom.xml
  • child3
    • src
    • pom.xml
  • pom.xml

형식이었다

 

parent child pom.xml 차이점 중 제일 중요한점은 packaging attribute이다

parent pom, child jar 되어있어야한다

 

parent pom.xml

<modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <modules>
        <module>child1</module>
        <module>child2</module>
        <module>child3</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>com.test</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0.SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    .
    .
    .
    

 

dependencies 묶어서 내보내도 되지만 나는 각자 따로 돌아가는 프로세스를 묶은거라 child pom 그대로 놔뒀다

(유지보수를 위해서 라는 핑계로)

 

여기서 modules child artifactId 적으면 parent 완료

 

child

child parent값이 parent 따라간다 

그리고 packaging jar 변경한다

 

<parent>

    <artifactId>parent</artifactId>

    <groupId>com.test</groupId>

    <version>1.0.0.SNAPSHOT</version>

</parent>

<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>child1</artifactId>

 

 

 

 

maven build를 실행한다

working directory parent 놓고 clean package

Command line에 maven.test.skip을 true로 놓으면 테스트를 스킵할 수 있다

 

 

pom과 jar로 설정되어있다

 

 

열심히 빌드를 해서 완료처리를 한다

각자의 target 가보면 jar 생성된 것을 확인할 있다.

 

이때 모듈 빌드 순서는 parent의 빌드 순서대로 child1 2 3 4가 되어야 하지만 이 경우는 child2를 child1이 참조하는 프로젝트라 빌드되는 순서가 바뀌었다

 

멀티프로젝트에서 한 프로젝트를 다른 프로젝트에서 참조하는 경우는 다음 블로그에서 설명하겠다

728x90
반응형
Comments