"maven-shade-plugin"을 사용하여 Java 또는 Spring 프로젝트에 필요한 모든 종속성을 포함하는 단 1개의 실행 가능한 jar를 생성하시겠습니까?

게시 됨: 2016-11-16

maven-shade-plugin-how-to-create-javaspring-based-executable-jar-with-all-required-dependencies

모든 종속성이 포함된 Crunchify.jar 파일 하나를 생성하기만 하면 됩니다.

지난 주에 maven-resources-plugin , maven-dependency-plugin & maven-jar-plugin 을 사용하여 완전한 실행 가능한 Jar 프로젝트를 생성하는 방법에 대한 튜토리얼을 작성했습니다. 결과적으로 /target/Crunchify 폴더에 필요한 모든 파일을 생성/복사합니다.

Before: maven-resource, maven-dependency, maven-jar 플러그인 사용:

maven-resources-maven-dependency-maven-jar-plugin-to-build-java-project

After: maven-shade 플러그인 사용:

create-just-1-executable-jar-with-all-required-dependencies-properties-and-resources-file-in-it-for-your-java-or-spring-project

위의 결과를 얻는 방법을 시작해 보겠습니다.

보시다시피 Java 프로젝트의 모든 것을 just one file 로 묶었고 이름을 Crunchify.jar (모든 파일 포함)로 지정했습니다.

며칠 전에는 Maven을 사용하여 runnable binary distribution of a standalone Java application 를 만들고 싶었기 때문에 이를 달성하는 방법에 대해 전혀 몰랐습니다. 다시 말해:

  1. maven으로 스프링 기반 실행 가능한 jar를 만드는 방법은 무엇입니까?
  2. Maven for Java + Spring + 기타 종속성을 사용하여 실행 가능한 바이너리 배포 만들기
  3. Maven으로 Java + Spring 프로젝트를 빌드하는 방법은 무엇입니까?

일반적으로 Maven에서는 종속성 관리에 의존합니다. 아티팩트에는 자체 클래스/리소스만 포함됩니다. Maven은 컴파일 및 실행할 때 프로젝트가 종속된 모든 아티팩트(JAR 등)를 찾을 책임이 있습니다.

maven -shade- plugin 의 도움으로 이 목표를 달성할 수 있었습니다 . 종속성을 포함하여 uber-jar (One major file jar) 에 아티팩트를 패키징하고 일부 종속성의 패키지를 음영 처리(즉, 이름 바꾸기)하는 기능을 제공합니다.

내 프로젝트에는 Spring Framework, JSON, 타사 도구 등과 같은 다른 종속성이 너무 많습니다. 아래는 샘플 프로젝트이지만 프로덕션 .jar 파일은 ~5.2MB big 로 나왔습니다.

uber-jar 는 모든 종속성을 취하고 종속성의 내용을 추출하여 프로젝트 자체의 클래스/리소스와 함께 하나의 JAR에 넣는 것입니다. 이러한 uber-jar가 있으면 easy for execution . 앱을 실행하는 데 수많은 작은 JAR 대신 하나의 큰 JAR만 필요하기 때문입니다. 또한 경우에 따라 배포를 용이하게 합니다.

이를 위해서는 pom.xml 파일을 업데이트해야 합니다.

1 단계

완전한 pom.xml 파일을 살펴보십시오. 주로 <build> 태그에 관심이 있을 것입니다.

여기에서 볼 수 있듯이 pom.xml 파일에서 Resource Transformers 를 사용하고 있습니다. 여러 아티팩트의 classes/resources 를 하나 Crunchify JAR 로 집계하는 것은 겹치지 않는 한 간단합니다. 그렇지 않으면 여러 JAR의 리소스를 병합하는 일종의 논리가 필요합니다. 여기에서 리소스 변환기가 시작됩니다.

2 단계

pom.xml 파일에 maven-shade-plugin 을 추가한 다음 아래 명령을 사용하여 프로젝트를 빌드하십시오.

그리고 내부 all dependencies mentioned in pom.xml file 으로 생성된 하나 Crunchify.jar (uber-jar) 파일이 표시되어야 합니다.

3단계

프로젝트의 대상 폴더로 이동하면 Crunchify.jar 파일이 생성된 것을 볼 수 있습니다. 그냥 명령을 사용

$bash> java -jar Crunchify.jar 을 사용하여 프로젝트를 실행합니다.

추가할 사항이 있습니까? 아래 댓글 섹션에 추가하세요. 즐감하시고 즐거운 하루 되시고 해피코딩 하세요.