11.5 실행 가능한 jar 만들기

프로덕션 환경에서 실행할 수있는 완전히 독립적 인 실행 가능한 jar 파일을 작성하여 예제를 마무리 해 보겠습니다. 실행 가능한 jar ( "fat jar"라고도 함)는 컴파일 된 클래스와 함께 코드가 실행해야하는 모든 jar 종속성을 포함하는 아카이브입니다.

실행 가능한 jars 와 Java

자바는 중첩 된 jar 파일 (즉, jar 파일 내에 포함 된 jar 파일)을 로드하는 표준 방법을 제공하지 않습니다. 자체 포함 된 응용 프로그램을 배포하려는 경우 문제가 될 수 있습니다.

이 문제를 해결하기 위해 많은 개발자들이 “shaded” jars을 사용합니다. 음영 처리 된 jars는 모든 jars의 모든 클래스를 단일 "uber jar"로 간단히 패키지합니다. 음영 처리 된 jar의 문제점은 응용 프로그램에서 실제로 어떤 라이브러리를 사용하고 있는지 파악하기 어렵다는 것입니다. 여러개의 jar 파일에서 동일한 파일 이름을 사용하지만 (내용이 다른 경우) 문제가 될 수 있습니다.

스프링 부트는 다른 접근 방식을 취하고 실제로 jars를 직접 중첩 할 수 있게합니다.

실행 jars를 만들려면 우리는 pom.xmlspring-boot-maven-plugin를 추가해야합니다 . dependencies섹션 바로 아래에 다음 행을 삽입 하십시오.

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

spring-boot-starter-parentPOM 포함 <executions>바인드하는 구성 repackage목표를. 상위 POM을 사용하지 않는 경우이 구성을 직접 선언해야합니다. 자세한 내용은 플러그인 설명서 를 참조하십시오.

다음을 pom.xml에 저장 하고 mvn package명령 창에서 실행 하십시오.

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.2.2.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

target디렉토리 를 보면 myproject-0.0.1-SNAPSHOT.jar를 볼 수 있습니다. 파일의 크기는 약 10MB 여야합니다. 내부를 들여다보고 싶다면 jar tvf를 사용할 수 있습니다 .

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

또한 target디렉토리에 myproject-0.0.1-SNAPSHOT.jar.original 명명된 훨씬 작은 파일을보아야합니다. Maven이 Spring Boot로 다시 패키지하기 전에 만든 원래의 jar 파일입니다.

해당 응용 프로그램을 실행하려면 다음 java -jar명령을 사용하십시오 .

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.2.2.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

이전과 마찬가지로 ctrl-c을 통해 정상적으로 애플리케이션을 종료합니다.

Last updated