[Spring] 실전! 스프링 부트와 JPA 활용 #build.gradle

김상현·2022년 11월 1일
0

Spring

목록 보기
1/13
post-thumbnail

📒 [실전! 스프링 부트와 JPA 활용 - 김영한] 학습 후 정리자료입니다.
📒 Gradle 공식 홈페이지에서 참고한 내용입니다.


📍 Gradle

  • Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 충분히 유연하도록 설계된 오픈 소스 빌드 자동화 도구입니다.

📌 High performance

  • Gradle은 입력 또는 출력이 변경되어 실행해야 하는 작업만 실행하여 불필요한 작업을 방지합니다.
  • 또한 빌드 캐시를 사용하여 이전 실행 또는 다른 시스템(공유 빌드 캐시 사용)의 작업 출력을 재사용할 수 있습니다.

📌 JVM foundation

  • Gradle은 JVM에서 실행되며 이를 사용하려면 JDK(Java Development Kit)가 설치되어 있어야 합니다.
  • 이것은 사용자 정의 작업 유형 및 플러그인과 같은 빌드 로직에서 표준 Java API를 사용할 수 있으므로 Java 플랫폼에 익숙한 사용자를 위한 보너스입니다. 또한 다양한 플랫폼에서 Gradle을 쉽게 실행할 수 있습니다.
  • Gradle은 JVM 프로젝트 빌드에만 국한되지 않으며 기본 프로젝트 빌드 지원과 함께 패키지로 제공됩니다.

📌 Conventions

  • Gradle은 Maven의 책에서 일부를 가져와서 규칙을 구현하여 Java 프로젝트와 같은 일반적인 유형의 프로젝트를 쉽게 구축할 수 있도록 합니다.
  • 적절한 플러그인을 적용하면 많은 프로젝트에서 슬림한 빌드 스크립트로 쉽게 끝낼 수 있습니다.
  • 그러나 이러한 규칙이 제한되지 않습니다. Gradle을 사용하면 규칙을 재정의하고, 고유한 작업을 추가하고, 규칙 기반 빌드에 다른 많은 사용자 지정을 수행할 수 있습니다.

📌 Extensibility

  • Gradle을 쉽게 확장하여 고유한 작업 유형을 제공하거나 모델을 빌드할 수도 있습니다.

📌 IDE support

  • Android Studio, IntelliJ IDEA, Eclipse 및 NetBeans와 같은 여러 주요 IDE를 사용하여 Gradle 빌드를 가져와 상호 작용할 수 있습니다.

📌 Insight

  • 빌드 스캔 은 빌드 문제를 식별하는 데 사용할 수 있는 빌드 실행에 대한 광범위한 정보를 제공합니다.
  • 빌드 성능과 관련된 문제를 식별하는 데 특히 유용합니다.
  • 빌드 스캔을 다른 사람과 공유할 수도 있습니다. 이는 빌드 문제를 해결하기 위해 조언을 구해야 할 때 특히 유용합니다.

📍 JPASHOP build.gradle

plugins {
	id 'org.springframework.boot' version '2.7.5'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
	id 'java'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-devtools'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
	implementation 'junit:junit:4.13.1'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

📌 plugins

plugins {
	id 'org.springframework.boot' version '2.7.5'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
	id 'java'
}
  • 프로젝트에 plugins을 적용하면 plugins이 프로젝트의 기능을 확장할 수 있습니다.
    • Gradle 모델 확장
    • 규칙에 따라 프로젝트 구성
    • 특정 구성 적용
  • 프로젝트 빌드 스크립트에 logic을 추가하는 대신 plugins을 적용하면 많은 이점을 얻을 수 있습니다.
    • 재사용을 촉진하고 여러 프로젝트에서 유사한 논리를 유지 관리하는 오버헤드를 줄입니다.
      → 🧷 Gradle 공식문서 High Performance : Gradle은 입력 또는 출력이 변경되어 실행해야 하는 작업만 실행하여 불필요한 작업을 방지합니다.
    • 더 높은 수준의 모듈화를 허용하여 이해도와 구성을 향상시킵니다.
      → 🧷 Gradle 공식문서 Extensibility : Gradle을 쉽게 확장하여 고유한 작업 유형을 제공하거나 모델을 빌드할 수도 있습니다.
    • 명령형 논리를 캡슐화하고 빌드 스크립트가 가능한 한 선언적일 수 있도록 합니다.
      → 🧷 Gradle 공식문서 Conventions : 적절한 플러그인을 적용하면 많은 프로젝트에서 슬림한 빌드 스크립트로 쉽게 끝낼 수 있습니다.

📌 configurations

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}
  • Configuration는 아티팩트 및 해당 종속성 그룹을 나타냅니다.
  • compileOnly는 컴파일 전용 종속성 선언 역할을 합니다.
    • 컴파일 타임에는 필요하지만 런타임에는 필요하지 않은 종속성을 선언합니다.
    • 일반적으로 런타임에 발견될 때 음영 처리되는 종속성이 포함됩니다.
  • extendsFrom은 이 구성이 확장되는 구성의 이름입니다. 슈퍼 구성의 아티팩트도 이 구성에서 사용할 수 있습니다.
  • Lombok이 제공하는 어노테이션을 이용해서 작업을 처리하려면 Gradle에서는 AnnotationProcessor 라는 의존성 옵션을 사용해야합니다.
  • Gradle의 AnnotationProcessor 의존성 옵션은 javac 명령어의 -processorpath 옵션으로 전달되는 라이브러리를 정의합니다.

📌 dependencies

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-devtools'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
	implementation 'junit:junit:4.13.1'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  • dependencies는 의존성 관리를 위한 영역입니다.
  • Spring Boot를 통해 간단하게 생성할 수 있습니다.
profile
목적 있는 글쓰기

0개의 댓글