1. 소개

이 예제에서는 spring-boot-starter-parent에 대해 배우고 더 나은 의존성 관리, 플러그인의 기본 구성 및 Spring Boot 애플리케이션을 빠르게 빌드하기 위해 어떻게 이점을 얻을 수 있는지 알아 봅니다 .

또한 starter-parent가 제공하는 기존 의존성 및 속성의 버전을 재정의 할 수있는 방법도 알아 봅니다 .

2. 스프링 부트 스타터 부모

스프링 부팅 스타터 부모 우리의 응용 프로그램과 신속하게 구축 할 수있는 완전한 의존성 트리의 기본 구성을 제공합니다 -이 프로젝트는 특별한 스타터 프로젝트입니다 Spring 부트 프로젝트를.

또한 maven-failsafe-plugin , maven-jar-plugin , maven-surefire-plugin , maven-war-plugin 과 같은 Maven 플러그인에 대한 기본 구성을 제공합니다 .

그 외에도 s pring-boot-starter-parent의 부모 인 spring-boot-dependencies 에서 의존성 관리를 상속 합니다.

프로젝트의 pom.xml 에 이것을 부모로 추가하여 프로젝트에서 사용할 수 있습니다 .

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
</parent>

Maven Central에서 항상 최신 버전의 spring-boot-starter-parent얻을 수 있습니다 .

3. 의존성 관리

프로젝트에서 시작 부모를 선언했으면 의존성 태그 에서 선언하기 만하면 부모로부터 의존성을 가져올 수 있습니다 .

또한 의존성의 버전을 정의 할 필요가 없습니다. Maven은 부모 태그에서 시작 부모에 대해 정의 된 버전을 기반으로 jar 파일을 다운로드합니다.

예를 들어 웹 프로젝트를 빌드하는 경우 spring-boot-starter-web을 직접 추가 할 수 있으며 버전을 지정할 필요가 없습니다.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

4. 의존성 관리 태그

시작 부모가 제공하는 다른 버전의 의존성을 관리하기 위해 dependencyManagement 섹션 에서 의존성과 해당 버전을 명시 적으로 선언 할 수 있습니다 .

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.4.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

5. 속성

시작 부모에 정의 된 속성의 값을 변경하기 위해 속성 섹션에서 다시 선언 할 수 있습니다.

스프링 부팅 스타터 부모 는 부모를 통해 스프링 부팅 의존성 버전의 플러그인 모든 종속 버전, 자바 버전, 메이븐을 구성하기위한 용도 속성.

따라서 해당 속성을 변경하기 만하면 이러한 구성을 쉽게 제어 할 수 있습니다.

시작 부모에서 가져 오려는 의존성의 버전을 변경하려면 의존성 태그에 의존성을 추가하고 해당 속성을 직접 구성 할 수 있습니다.

<properties>
    <junit.version>4.11</junit.version>
</properties>

6. 기타 속성 재정의

플러그인 버전 관리와 같은 다른 구성이나 Java 버전 관리, 소스 인코딩과 같은 일부 기본 구성에도 속성을 사용할 수 있습니다.

새 값으로 속성을 다시 선언하면됩니다.

예를 들어 Java 버전을 변경하려면 java.version 속성 에 표시 할 수 있습니다 .

<properties>
    <java.version>1.8</java.version>
</properties>

7. 시작 부모가없는 스프링 부트 프로젝트

때로는 맞춤 Maven 부모가 있습니다. 또는 모든 Maven 구성을 수동으로 선언하는 것을 선호 할 수 있습니다.

이 경우 spring-boot-starter-parent 프로젝트를 사용하지 않도록 선택할 수 있습니다 . 그러나 가져 오기 범위 에서 프로젝트에 의존성 spring-boot-dependencies추가하여 의존성 트리의 이점을 얻을 수 있습니다 .

시작 부모가 아닌 다른 부모를 사용하려는 간단한 예를 들어 설명하겠습니다.

<parent>
    <groupId>com.baeldung</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>

여기서 우리는 부모 의존성으로 다른 프로젝트 인 부모 모듈 을 사용했습니다 .

이제이 경우에도 가져 오기 범위 및 pom 유형 에 추가하여 의존성 관리의 동일한 이점을 얻을 수 있습니다 .

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.6.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

또한 이전 예제에서했던 것처럼 의존성선언하여 의존성을 가져올 수 있습니다 . 이러한 의존성에는 버전 번호가 필요하지 않습니다.

8. 요약

이 예제에서는 spring-boot-starter-parent에 대한 개요 와이를 모든 하위 프로젝트에서 부모로 추가 할 때의 이점을 제공했습니다.

다음으로 의존성을 관리하는 방법을 배웠습니다. dependencyManagement 또는 속성을 통해 의존성을 재정의 할 수 있습니다 .

이 예제에 사용 된 스 니펫의 소스 코드는 Github 에서 사용할 수 있습니다. 하나는 시작 상위를 사용하고 다른 하나는 사용자 정의 상위를 사용합니다.