본문 바로가기
Programming/Java_Spring

Maven에서 parent의 pom.xml 의존성 정보 삽입

by 곰네Zip 2022. 8. 3.

만약 project구조가..

root
  - module1
  - module2
  - module3
  ...

위와 같이 되어있는 프로젝트.

module1, module2, module3에서 똑같이 lombok패키지를 사용하여 의존성이 있다고 가정해보자.

그러면 의존성이 있음을 알려줘야하니까.. pom.xml에 적어주면 된다.

module1의 pom.xml, module2의 pom.xml ...

만약 모듈이 100개라면? 위 방법으로는 100개의 pom.xml을 수정해주어야한다.

만약 버전까지 같이 정해버리면? 근데 버전이 바뀐다면? 한땀한땀 바꾸어야지.

그게 싫다면..

parent의 pom.xml의 dependencies안에 작성해두면 된다.

#parent's pom.xml
<dependencies>
   <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

#child's pom.xml
<depedencies>
</dependencies>

 그러면 child의 pom.xml에 기록해두지 않아도, 알아서 해당 패키지가 필요하다고 찾아낸다.

 만약, parent와 child 두곳에 모두 기록해두면?

 오류는 나지 않는다. 다만 중복되었다고 warning정도는 뱉어준다.

 중복되었는데, 버전이 다르게 기술된다면? 그건 오류 뱉어준다.

 

 parent의 pom.xml의 dependencies에 공통적으로 사용되는 모듈의 목록을 작성해둔다면, child의 pom.xml은 좀 더 깔금해질 것이다. 그렇다고 극히 적은 수의 모듈만 사용하는 의존성을 parent로 모두 때려넣는것은 하지말자. parent의 pom.xml이 더러워진다. 

 

 parent에 넣지 말아야 할 의존성이 하나 더 있다.

<module>
	<module>module1</module>
    <module>module2</module>
    ...
</module>

<dependencies>
	#DO NOT TRY THIS AT HOME
	<dependency>
    	...
        <artifactId>module1</artifactId>
    </dependency>
</dependencies>

parent에 module로 선언된 패키지는.. root의 dependencies에 선언되어서는 안된다. 비록 module2~100까지가 모두 module1을 참조한다 하여도.

 module1 입장에서는 parent의 dependencies에 있는 의존성을 찾는데.. 저기에 선언한다는 건 자기 자신을 순환해서 참조하라고 하는거니까. 문제가 된다. 당연히. (maven으로 빌드하려고하면 오류를 내뱉으며 중지시킨다.)

반응형

댓글