[스프링부트와 AWS로 혼자 구현하는 웹 서비스] build.gradle 파일 수정

세이라·2023년 7월 19일
0

스터디를 통해 스프링부트와 AWS로 혼자 구현하는 웹 서비스(저자 이동욱) 서적을 공부하는 중입니다.

공부/실습한 내용을 정리한 포스팅입니다.
책에 모르는 부분이 있으면 구글링하거나 챗gpt에 물어봐서 보충하였습니다.
(아직 초보라 모르는 부분이 많아 이것저것 다 적었습니다.)

참고한 사이트 출처는 포스팅 맨 하단에 적었습니다.

build.gradle과 setting.gradle 차이

  • build.gradle : 프로젝트 환경설정, 빌드방법, 라이브러리 정보 등 기술함으로써 빌드 및 프로젝트의 관리 환경 구성.
  • settings.gradle : 프로젝트 구성 설정(멀티프로젝트 구성 시 필요)

buildscript {
    ext{
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies{
    	classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

스프링부트 그레이들 플러그인 의존성 관리를 위한 설정 코드

buildscript

  • gradle로 task 수행 시 사용되는 설정.
  • 소스코드 컴파일과 같은 빌드 작업을 시작하기 전에 빌드 시스템 준비 단계에 먼저 실행.
  • gradle의 스크립트에서 외부 라이브러리가 필요할 때 사용.
  • repositories, dependencies로 구성.

ext

  • build.gradle에서 사용하는 전역변수 설정.

repositories

  • build.gradle이 들어있는 project에서 사용하는 라이브러리의 위치 지정.
    보통 인터넷에 있는 공개용 라이브러리 저장소를 쓴다. 그래서 라이브러리를 어떤 원격 저장소에서 받을지 정함.
  • 기본적으로 mavenCentral을 많이 사용하지만, 최근에는 라이브러리 업로드 난이도 때문에jcenter도 많이 사용.
  • mavenCentral은 본인이 만든 라이브러리를 업로드하기 위해 많은 설정과 과정이 필요하여 개발자들이 업로드를 안하기 시작. jcenter의 경우, 이런 문제점을 개선하여 라이브러리 업로드를 간단히 하였고 업로드 시 mavenCentral에도 업로드될 수 있도록 함.

dependencies

  • 라이브러리명 작성.
  • buildscript에서는 classpath 사용.
  • org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion} : 플러그인 의존성 관리. ${springBootVersion}를 통해 플러그인 버전 관리할 수 있음.

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
  • 자바와 스프링 부트를 사용하기 위한 필수 플러그인 4개를 프로젝트에 적용.
  • apply plugin: 'eclipse'는 Eclipse IDE와의 통합을 위한 설정을 제공.
    Eclipse 프로젝트 파일을 생성하고, Eclipse IDE에서 Gradle 프로젝트를 쉽게 가져와서 개발할 수 있도록 도와줌.
  • eclipse 플러그인은 Gradle 빌드 설정 자체에 영향을 미치지만, spring-boot-gradle-plugin은 스프링 부트 프로젝트 빌드와 관련된 특정 기능들을 추가.
  • apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    : 모두 스프링 부트 프로젝트와 관련된 플러그인. 각각의 플러그인은 스프링 부트 프로젝트를 빌드하고 의존성 관리를 용이하게 해주는 기능을 제공. 이 두 개의 플러그인을 추가하기 위해 spring-boot-gradle-plugin를 추가.

plugin

  • 프로젝트에 추가되는 기능 또는 빌드 동작을 확장하기 위해 사용되는 도구 모음.
  • 빌드 프로세스 확장하고 특정 기능을 제공하는 도구.
    ※ task : 애플리케이션 빌드부터 테스트까지 다양한 작업을 수행하는 작업단위
    - 예1) java plugin : java 프로젝트를 빌드하고 관리하기 위해 편리한 기능을 제공해주는 플러그인. compile Java, classes, test, jar 등의 task 제공
    - 예2) war plugin : java web 웹 애플리케이션을 빌드하기 위한 플러그인. 애플리케이션 소스를 war파일로 묶어주는 war task 제공
  • io.spring.dependency-management : 스프링 부트의 의존성 관리해 주는 플러그인

group 'com.webservice.springboot'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

group

  • 프로젝트에서 설정한 groupdId
    ※ groupId : 모든 프로젝트에서 프로젝트를 고유하게 식별. java패키지 네이밍 규칙을 따라서 역 도메인 네임으로 시작. 일반적으로 웹사이트 도메인 역순으로 작성.

version

  • 프로젝트 프로그램의 버전
  • SNAPSHOT : 현재 테스트 단계
    ※ 소프트웨어 생명주기 접미사 종류
    SNAPSHOT(현재 테스트 단계) / Mx(Milestone)(주요 기능 및 버그 수정 중 단계) / RC(Release Candidate)(전반적 기능과 버그가 모두 수정된 최종 배포 전 단계) / GA(General Availability)(최종 배포 단계)

sourceCompatibility

  • 컴파일에 사용하는 JDK 버전
    (책에서는 Java 8을 사용해서 1.8로 표기했지만, 나는 17버전을 쓰기 때문에 17로 수정했다가! 책에서 쓰는 스프링 버전에선 17버전이랑 맞지 않으므로 다시 1.8로 돌아갔다)

repositories {
    mavenCentral()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

repositories

  • 마찬가지로 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지 정함.

dependencies

  • buildscriptdependencies와 달리 classpath가 아닌 implementation 사용하며 명시된 상황에서만 의존 라이브러리 참조 가능.(implementation이 명시된 상황이며, 사용 시 컴파일 필요)
  • 책에는 compile, testCompile이라 적혀있지만, 삭제된 메서드라 implementation, testImplementation 사용.
    ※ 참고 게시글 링크 : 스프링부트 build.gradle 설정 시 오류(Could not find method compile() for arguments)
  • 작성 시 주의사항 : 특정 버전 명시X 버전을 명시하지 않아야만 위에서 작성한 스프링부트 그레이들 플러그인의 스프링부트 버전에 맞춰 버전 관리가 됨.(버전 충돌 문제 해결)

참고한 책과 사이트

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기