build.gradle: Front-end Build 조건부 실행

calico·2025년 5월 9일

Computer Science

목록 보기
8/51

build.gradle을 보면 frontend(Vue.js)백엔드(Spring Boot)의 리소스 빌드 단계에 "강제로 항상 같이 돌아가도록" 되어 있습니다.


🔍 문제의 핵심 코드


processResources.dependsOn 'buildFrontEnd'

이 설정 때문에

  • 백엔드 Gradle 빌드(예: ./gradlew build, IntelliJ에서 Rebuild, Run)
    누를 때마다

  • 항상 프론트엔드 디렉토리(여기서는 '../../Frontend')로 들어가서

  • npm run build무조건 실행됩니다.

이게 자동 빌드가 반복 실행(쌓임) 되는 가장 큰 이유입니다.



✔️ 해결/최적화 방법


1. 필요할 때만 프론트 빌드


  • 개발 중에는 굳이 프론트까지 매번 빌드할 필요 없이배포 직전, 또는 정말 새로 배포할 때만 frontend 빌드를 하도록 분리하는 게 좋습니다.



2. 조건부 실행으로 바꾸기


  • processResources.dependsOn 'buildFrontEnd'

    임시로 주석 처리하거나

    PbuildFrontend=true 옵션을 줬을 때만 빌드되게 만드세요!

  • 예시:
if (project.hasProperty('buildFrontend')) {
    processResources.dependsOn 'buildFrontEnd'
}
  • 이후 프로젝트 빌드시만 프론트까지 빌드하고 싶으면
./gradlew build -PbuildFrontend=true



3. 프론트엔드 따로 빌드, 프런트와 백엔드 CI 통합 전달만


  • Frontend 빌드는 따로 수행하고,

  • Backend의 빌드 산출물(resources/static, resources/public 등)로 복사만 해도 OK.



🔵 개발 생산성 핵심


  • processResources항상 프론트 빌드를 강제하므로

    → 작업 중(특히 소스 저장/자동 빌드 시)마다 frontend 빌드가 겹치거나 중복될 수 있음

  • 개발할 땐 이 줄을 꺼두고 통합 배포나, 정말 필요할 때만 빌드가 같이 돌게 하세요!



📌 사용 예시 현장 팁

개발할 때

// processResources.dependsOn 'buildFrontEnd'  // ← 주석 처리!

서버 배포나 패키징할 때(프론트 같이 할 때만)

./gradlew build -PbuildFrontend=true

혹은 진짜 풀 패키지가 필요할 때만 주석 해제!

정리:

지금 당신은 “매번 백엔드 빌드(action/processResources)마다 프론트 빌드가 무조건 추가 실행”되는 구조이니,

의존성 연결을 조건부, 혹은 수동 빌드로 바꿔라!

이렇게 하면 "자동 빌드 쌓임" 문제, 빌드 지연, 중복 빌드 현상이 바로 사라집니다.

“통합 빌드” 구조에서

processResources.dependsOn 'buildFrontEnd'

→ 이게 모든 백엔드 빌드 때마다 프론트까지 무조건 빌드시키는 설정이라서,

  • 작게는 코드 하나만 바꿔도 전체 빌드가 느려지고, 크게는 여러 번 빌드 명령이 겹칠 때 빌드가 쌓이고 중첩되어 현상이 심해집니다.



💡 이렇게 개선하면 훨씬 쾌적해집니다!


1. 평소엔 의존성 주석처리/분리


개발할 때 프론트 빌드는 수동,

백엔드 빌드는 백엔드만!

// processResources.dependsOn 'buildFrontEnd'  // ← 일단 주석!

2. 정말 “통합 빌드”만 필요할 때 조건부 연결


if (project.hasProperty('buildFrontend')) {
    processResources.dependsOn 'buildFrontEnd'
}
  • 통합 빌드시: ./gradlew build -PbuildFrontend=true

  • 평소엔: 그냥 ./gradlew build


3. (추가) 빌드 결과물만 복사하고, 빌드 동작은 분리


  • Frontend npm run build → 산출물(예: dist, build 폴더)만 복사

  • Backend 빌드에서는 프론트 산출물만 참조


📌 이런 구조로 가면

  • 작성/저장/단순 빌드에는 백엔드만 돌고,

  • 실제 배포 상황에서만 둘이 통합!

  • 빌드 시간 단축, 중복 문제 해결, 빌드 쌓임·느려짐 사라집니다.

profile
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글