프로덕션 환경에서 실행할 수있는 완전히 독립적 인 실행 가능한 jar 파일을 작성하여 예제를 마무리 해 보겠습니다. 실행 가능한 jar ( "fat jar"라고도 함)는 컴파일 된 클래스와 함께 코드가 실행해야하는 모든 jar 종속성을 포함하는 아카이브입니다.
실행 가능한 jars 와 Java
자바는 중첩 된 jar 파일 (즉, jar 파일 내에 포함 된 jar 파일)을 로드하는 표준 방법을 제공하지 않습니다. 자체 포함 된 응용 프로그램을 배포하려는 경우 문제가 될 수 있습니다.
이 문제를 해결하기 위해 많은 개발자들이 “shaded” jars을 사용합니다. 음영 처리 된 jars는 모든 jars의 모든 클래스를 단일 "uber jar"로 간단히 패키지합니다. 음영 처리 된 jar의 문제점은 응용 프로그램에서 실제로 어떤 라이브러리를 사용하고 있는지 파악하기 어렵다는 것입니다. 여러개의 jar 파일에서 동일한 파일 이름을 사용하지만 (내용이 다른 경우) 문제가 될 수 있습니다.
스프링 부트는 다른 접근 방식을 취하고 실제로 jars를 직접 중첩 할 수 있게합니다.
실행 jars를 만들려면 우리는 pom.xml
에 spring-boot-maven-plugin
를 추가해야합니다 . dependencies
섹션 바로 아래에 다음 행을 삽입 하십시오.
Copy <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent
POM 포함 <executions>
바인드하는 구성 repackage
목표를. 상위 POM을 사용하지 않는 경우이 구성을 직접 선언해야합니다. 자세한 내용은 플러그인 설명서 를 참조하십시오.
다음을 pom.xml
에 저장 하고 mvn package
명령 창에서 실행 하십시오.
Copy $ 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
를 사용할 수 있습니다 .
Copy $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
또한 target
디렉토리에 myproject-0.0.1-SNAPSHOT.jar.original
명명된 훨씬 작은 파일을보아야합니다. Maven이 Spring Boot로 다시 패키지하기 전에 만든 원래의 jar 파일입니다.
해당 응용 프로그램을 실행하려면 다음 java -jar
명령을 사용하십시오 .
Copy $ 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
을 통해 정상적으로 애플리케이션을 종료합니다.