반응형

항상 메이븐만 쓰다가 그래들 환경으로 프로그래밍 하려니 새로운 걸 자주 접하게 되서 재밌다.

 

스프링부트에서 application 을 프로파일 환경에 맞게 가져올 때

공통으로 사용할 기본 application 이 있고

프로파일 마다 각각의 application-${profile}을 같이 가져오게 세팅했다면 중복으로 가져왔다는 에러를 뱉는다.

 

구조

resources
  ├─ profile (프로파일별 application.yaml)
  │    ├─ application-dev.yaml
  │    ├─ application-local.yaml
  │    ├─ application-qa.yaml
  │    └─ application-stage.yaml
  └─ application.yaml (공통 appliaction.yaml)

- profile과 공통 application이 존재하는 상황

 

에러

Entry application.yml is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.3/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.

 

해결

이럴 땐 아래와 같이 가져온 resources 를 어떻게 처리할 지 DuplicatesStrategy 을 지정해주어야 한다.

대표적으로 INCLUDE / EXCLUDE가 있다.

 

아래 코드를 build.gradle에 task 영역에 추가하자.

tasks {

    processResources {
        duplicatesStrategy = org.gradle.api.file.DuplicatesStrategy.INCLUDE
    }

 

반응형

WRITTEN BY
데르벨준

,