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 버전을 쓰는게 안정적이다.