Spring Boot 2.0.1 reference 정리 2

2018-04-12

1. Creating an Executable Jar

  • 실행 가능한 jar 파일 안에는 컴파일된 클래스와 코드를 실행하기 위해 필요한 모든 jar dependencies들이 포함되어 있다.
  • maven이나 gradle 플러그인을 사용하면 executable jar 파일을 자동으로 생성해준다
  • maven에서 실행가능한 jar 파일을 만들기 위해서는 pom.xml에 spring-boot-maven-plugin을 추가한다.
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>


2. Launcing Executable Jars

  • $ mvn package 를 실행한 후 target directory로 이동 하면 example-0.0.1-SNAPSHOT.jar과 같은 jar 파일을 볼 수 있다.
  • $ mvn package 를 실행한 후 target directory로 이동 하면 example-0.0.1-SNAPSHOT.jar.origin 역시 볼 수 있는데 이 파일은 메이븐이 스프링 부트로 repackage 되기 전 original jar 파일이다.
  • $ java -jar example-0.0.1-SNAPSHOT.jar 로 실행할 수 있다.

3. Build System

  • maven이나 gradle을 사용하기를 권장한다. ant나 다른 build 시스템을 써도 가능은 하지만 부분적으로 잘 지원되지 않을 수 있다.


3-1. Dependency Management

  • build 설정에서 version 명시를 따로 하지 않아도 됨. SpringBoot가 dependency 버전을 관리해준다. 따라서 2.0.0. -> 2.0.1로 버전을 올린다고 해도 버전 숫자만 바꾸면 호환되는 dependency로 변경해준다.
  • 스프링 부트의 각 릴리즈는 스프링 프레임 워크의 기본 버전과 연관된다. 버전을 따로 지정하지 않는 것을 권장한다.
  • 스프링 부트에서 버전 관리 해주지 않는 라이브러리만 버전을 명시한다.


3-2. Maven

  • maven 유저들은 spring-boot-starter-parent 프로젝트를 상속 받아 사용할 수 있다.
  • parent-project는 다음과 같은 특징을 제공한다
    • Java 1.8 컴파일러 레벨
    • UTF-8 인코딩
    • 스마트한 리소스 필터링을 제공. 예를 들어 profile을 포함하여 application.properties 지원 (application-dev.properties)


3-2-1. Inheriting the Starter Parent

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.1.RELEASE</version>
</parent>


3-2-1. Inheriting the Starter Parent

  • 스프링 부트 메이븐 플러그인 사용하기
  • 이 플러그인이 있어야 executable JAR를 만들 수 있음
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>



※ snapshot, M, RC, GA 버전 차이점

  • snapshot: daily build version
  • milestone: snapshot이 어느정도 정리가 된 것 같으면 milestone으로 배포
  • realease-candidate:
  • GA: maven repository에 공식적으로 올라간 것으로 해당 버전을 사용하면 사설 repository 주소가 따라 붙지 않는다.
  • 즉 GA 버전을 쓰는게 안정적이다.

참고

백기선님 스프링부트 2.0 강의
Spring Boot Reference Guide
메이븐 리소스 필터링?