1. 소개
최근 몇 년간 마음이 따뜻해지는 개발 중 하나는 웹 애플리케이션 배포 방법을 지속적으로 단순화 한 것입니다.
지루한 중간 역사적 단계를 모두 건너 뛰고, 성가신 서블릿과 XML 보일러 플레이트뿐만 아니라 대부분 서버 자체도 제거 할 수있는 오늘에 도달했습니다.
이 기사는 기본적으로 배포 및 실행이 쉬운 단일 아티팩트를 생성하기 위해 Spring Boot 애플리케이션 에서 " fat jar" 를 만드는 데 중점을 둡니다 .
Boot는 즉시 컨테이너없는 배포 기능을 제공합니다. pom.xml 에 몇 가지 구성을 추가하기 만하면됩니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.0</version>
</plugin>
</plugins>
2. 빌드 및 실행
이 구성으로 이제 우리는 표준 mvn clean install로 프로젝트를 간단히 빌드 할 수 있습니다.
그리고 다음 명령으로 실행합니다. java -jar <artifact-name> – 매우 간단하고 직관적입니다.
적절한 프로세스 관리는이 기사의 범위를 벗어나지 만 서버에서 로그 오프 한 경우에도 프로세스를 계속 실행하는 간단한 방법 중 하나는 nohup 명령 인 nohup java -jar <artifact-name>을 사용하는 것입니다.
중지 Spring 부팅 프로젝트 것은, 또한 일반 프로세스를 중지 다르지 않다 우리는 단순히 여부 CNTRL + C 또는 죽 <PID>.
3. 뚱뚱한 항아리 / 뚱뚱한 전쟁
이면에서 스프링 부트 는 최종 아티팩트 내부의 모든 프로젝트 의존성을 사이드 프로젝트 클래스 (따라서 "fat"jar)와 함께 패키지화합니다. 임베디드 Tomcat 서버도 내장되어 있습니다.
따라서 결과물은 완전히 독립적이고 표준 Unix 도구 (scp, sftp… etc)를 사용하여 쉽게 배포 할 수 있으며 JVM이있는 모든 서버에서 실행할 수 있습니다.
기본적으로 Boot는 jar 파일을 생성 하지만 pom.xml 의 packaging 속성 을 war로 변경하면 Maven이 자연스럽게 war를 빌드합니다 .
물론 이것은 독립형으로 실행 가능하며 웹 컨테이너에 배포됩니다.
4. 추가 구성
대부분의 경우 추가 구성이 필요하지 않고 모든 것이 "작동"하지만 특정 경우에는 스프링 부트 에 주 클래스가 무엇인지 명시 적으로 알려야 할 수도 있습니다 . 이를 수행하는 한 가지 방법은 속성을 추가하는 것입니다.
<properties>
<start-class>org.baeldung.boot.Application</start-class>
</properties>
spring-boot-starter-parent를 상속 하지 않는 경우 Maven 플러그인에서 수행해야합니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.0</version>
<configuration>
<mainClass>org.baeldung.boot.Application</mainClass>
<layout>ZIP</layout>
</configuration>
</plugin>
드문 경우에해야 할 또 다른 일은 Maven에게 의존성 을 풀 도록 지시 하는 것입니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<requiresUnpack>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
5. 결론
이 기사에서는 spring-boot에 의해 구축 된“fat”jar를 사용한 서버리스 배포를 살펴 보았습니다 .
항상 그렇듯이이 글의 코드는 Github에서 모두 사용할 수 있습니다 .