1. 개요

Spring Boot 는 Spring Boot 애플리케이션을 더 쉽게 생성 할 수 있도록 상위 POM을 제공합니다.

그러나 이미 상속 할 부모가있는 경우 부모 POM을 사용하는 것이 항상 바람직한 것은 아닙니다.

이 빠른 사용방법(예제)에서는 부모 스타터없이 Boot를 계속 사용할 수있는 방법을 살펴 보겠습니다.

2. 부모 POM없는 스프링 부트

상위 pom.xml 은 의존성 및 플러그인 관리를 처리합니다. 이러한 이유로 상속은 응용 프로그램에서 중요한 지원을 제공하므로 일반적으로 부팅 응용 프로그램을 만들 때 선호되는 작업 과정입니다 . 이전 기사 에서 상위 스타터를 기반으로 애플리케이션을 빌드하는 방법에 대한 자세한 내용을 찾을 수 있습니다 .

하지만 실제로 는 다른 부모를 사용하기 위해 디자인 규칙이나 기타 기본 설정에 제약을받을 수 있습니다.

다행스럽게도 Spring Boot 는 상위 스타터에서 상속하는 것에 대한 대안을 제공하므로 여전히 장점 중 일부를 제공 할 수 있습니다.

부모 POM을 사용하지 않는 경우에도 scope = import를 사용 하여 spring-boot-dependencies 아티팩트를 추가하여 의존성 관리의 이점을 얻을 수 있습니다 .

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

다음으로, Spring 의존성을 추가하고 Spring Boot 기능 을 사용하기 시작할 수 있습니다.

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

반면에 부모 POM이 없으면 더 이상 플러그인 관리의 혜택을 누릴 수 없습니다. 즉, spring-boot-maven-plugin을 명시 적으로 추가해야합니다 .

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

3. 의존성 버전 재정의

특정 의존성에 대해 Boot에서 관리하는 것과 다른 버전을 사용하려면 spring-boot-dependencies 가 선언 되기 전에 dependencyManagement 섹션 에서 선언해야합니다 .

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

반대로, dependencyManagement 태그 외부에서 의존성 의 버전을 선언하는 것만으로 는 더 이상 작동하지 않습니다.

4. 결론

이 빠른 사용방법(예제) 에서 부모 pom.xml 없이 Spring Boot사용하는 방법을 살펴 보았습니다 .

예제의 소스 코드는 GitHub 에서 찾을 수 있습니다 .