[서버][스프링] IntelliJ와 iml파일에 대해

프로그래밍/서버2021. 3. 4. 16:23

IntelliJ에서 iml파일은 모듈 디펜던시 기억을 위해 사용됩니다.

pom파일에서 디펜던시를 추가하면 관련 모듈들이 iml파일에도 추가됩니다. (앱 실행시 변경되는 듯)

 

반대로 pom 파일에서 디펜던시를 삭제하면 iml 파일에 추가된 디펜던시가 자동으로 삭제됩니다.

만약 삭제되지 않는 것처럼 보인다면.. pom 파일에 남아있는 다른 디펜던시에서 특정 모듈을 계속 사용해서 iml파일에 남아있을 것일 수도 있습니다.

 

pom 파일 말고 위의 화면(Project Settings > Modules)에서도 디펜던시 추가/삭제가 가능합니다.

 

테스트 중인 스프링 프로젝트에서 pom파일에 eureka client를 추가하지 않았음에도 실행을 시켜보면 계속 eureka client가 실행이 됐습니다.

 

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

pom 파일을 확인해보니 복붙으로 잘못 들어간 eureka server쪽 디펜던시가 있었습니다.

이 부분을 조사해보니 eureka-server 디펜던시를 추가해도 eureka-client 디펜던시도 같이 포함됩니다.

 

By default, the registry also tries to register itself, so you need to disable that behavior as well.

 

설계상 디펜던시에 eureka-server를 추가하면 eureka-client도 추가됩니다. 그리고 eureka-client가 포함만 되어도 앱 실행시 자동으로 등록을 하려고 합니다.

 

	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getTargetObject(EurekaRegistration.java:167) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getEurekaClient(EurekaRegistration.java:156) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.maybeInitializeClient(EurekaServiceRegistry.java:57) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.register(EurekaServiceRegistry.java:39) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.start(EurekaAutoServiceRegistration.java:80) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:52) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:157) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:121) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:885) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) ~[spring-boot-2.0.3.RELEASE.jar:2.0.3.RELEASE]
	at com.dreamaz.gongga.auth.Application.main(Application.java:33) ~[classes/:na]

eureka client registry 콜스택을 일부 보면 위와 같습니다.

 

참고

www.jetbrains.com/help/idea/creating-and-managing-modules.html

 

Modules - Help | IntelliJ IDEA

 

www.jetbrains.com

spring.io/guides/gs/service-registration-and-discovery/

 

Service Registration and Discovery

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io

 

작성자

Posted by 드리머즈

관련 글

댓글 영역