욱'S 노트

Spring Boot - 빌드시스템 본문

Programming/Spring Boot

Spring Boot - 빌드시스템

devsun 2015. 3. 23. 15:17

디펜던시 관리를 지원하는 빌드 시스템을 선택하기를 강력하게 추천하고 Maven Central 리파지토리에서 배포한 artifacts를 사용하기를 권고한다. 그래서 우리는 Maven 이나 Gradle을 추천한다. Spring Boot는 다른 빌드시스템(예 - Ant)를 지원하지만, 부분적으로 잘 지원하지 못할 수 있다.


메이븐 사용자는 spring-boot-starter-parent 프로젝트를 상속받을 수 있다. parent 프로젝트는 다음과 같은 내용을 지원한다.

  • 기본 컴파일러 Java 1.6
  • UTF-8 소스 인코딩
  • 디펜던시 관리 부분 - spring-boot-dependencies POM으로 상속되는 공통적인 디펜던시에 대한 version 태그를 누락할 수 있게 제공한다. 
  • 합리적인 리소프 필터링
  • 합리적인 플러그인 설정 (exec plugin, surefire, Git commit ID, shade)
  • application.properties 및 application.yml을 위한 합리적인 리소스 필터링


기본 설정 파일이 Spring 스타일 placeholders(${})를 지원하기 때문에  메이븐 필터링은 @..@ placeholders를 사용하기 위해 변경한다. (Maven property resource.delimiter를 오버라이드 할수 있다.)


프로젝트를 설정하기 위해선 spring-boot-starter-parent를 상속받으면 된다.

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


모두가 spring-boot-starter-parent를 상속받기를 원하지 않을 수 있다. 회사만의 표준 parent가 있거나 명시적으로 메이븐 설정을 하기를 원한다면 다음과 같이 디펜던시로 추가하면 된다.

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


spring-boot-starter-parent는 적절한 보수적인 자바 버젼을 선택한다. 만약 최신의 자바버젼으로 변경하고 싶다면 java.version property를 추가함으로써 변경할 수 있다.

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


Spring Boot는 executable jar로 프로젝트를 패키징할 수 있는 메이븐 플러그인을 포함하고 있다.  plugins 섹션에 plugin을 추가할 수 있다. 만약 Spring Boot parent pom을 상속 받았고 parent pom에 정의된 설정을 변경할 필요가 없다면 플러그인만 추가하면 된다.

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

Starter POM은 어플리케이션에 포함시킬 수 있는 편리한 디펜던시 정의 세트이다. 당신이 필요한 Spring과 그와 연관된 기술들을 모아놓은 원스톱샵이다. 예를 들어 Spring과 데이터베이스 접근을 위해 JPA를 사용하기를 원한다면 spring-boot-starter-data-jpa 디펜던시만 프로젝트에 포함하면 된다. 


모든 starter는 비슷한 이름 패턴을 가지고 있다 : spring-boot-starter-*. *은 어플리케이션의 특별한 타입이다. 이러한 네이밍 구조는 필요한 starter를 찾는데 도움을 준다. 



'Programming > Spring Boot' 카테고리의 다른 글

Spring Boot - SpringApplication  (0) 2015.06.03
Spring Boot - 데이터베이스 연동  (0) 2015.04.09
Spring Boot - 프로젝트 구성하기  (0) 2015.03.23
Spring Boot - 시작하기  (1) 2015.03.23
Comments