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.xmlpackaging 속성 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에서 모두 사용할 수 있습니다 .