복붙노트

[SPRING] Spring 기반 Java 애플리케이션에서 단일 실행 가능 JAR 작성

SPRING

Spring 기반 Java 애플리케이션에서 단일 실행 가능 JAR 작성

특정 네임 스페이스 내의 패키지를 찾는 구성 요소 / 패키지 검사를 수행하는 스프링 기반 응용 프로그램이 있습니다. 응용 프로그램은 Eclipse에서 완벽하게 실행되며 다양한 실행 환경에 배포 할 단일 실행 가능 JAR을 만들고 싶습니다.

이 방법을 사용하기 위해 여러 가지 방법을 시도했지만 작동하는 유일한 방법은 JAR 외부의 폴더에 종속성을 포함시키는 것입니다. 여기 제가 지금까지 시도한 것이 있습니다 -

따라서 내 코드에서 문제가되지 않는다고 생각합니다. 단일 JAR 내부에서 스캔을 수행하는 패키징 스프링 문제가있는 것으로 보입니다. 그것이 맞을까요?

누구나 단일 실행 파일 JAR에 패키지 / 구성 요소 검사를 수행하는 스프링 기반 응용 프로그램을 빌드하는 방법에 대한 조언이 있습니까?

대답:

다음 XML을 POM 파일에 추가하고 "mvn package"를 사용 했으므로 작동하는 단일 실행 파일이 만들어졌습니다. 그것이 효과가 있었던 이유는 여전히 수수께끼입니다.

      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.company.project.MainApp</mainClass>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.handlers</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.schemas</resource>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

해결법

  1. ==============================

    1.uberjar 만들기에 Maven Shade Plugin을 사용하십시오. 이것은 또한 당신을 도울 수 있습니다.

    uberjar 만들기에 Maven Shade Plugin을 사용하십시오. 이것은 또한 당신을 도울 수 있습니다.

  2. ==============================

    2.나는 정확히 똑같은 단계를 수행하면서 오늘 당신과 똑같은 문제를 겪었습니다. :)

    나는 정확히 똑같은 단계를 수행하면서 오늘 당신과 똑같은 문제를 겪었습니다. :)

    메시지를 보내 주셔서 감사합니다. 시간을 절약 할뿐 아니라, "왜 작동했는지 아직도 수수께끼입니다." 문장 :

    그래서 Maven Shade Plugin 문서에 명시된 maven 스 니펫에 두 개의 트랜스포머를 추가해야합니다.

    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"
      <resource>META-INF/spring.handlers</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"
      <resource>META-INF/spring.schemas</resource>
    </transformer
    

    출처 : http://robert-reiz.com/2011/11/14/832/

    이해를 돕기를 바랍니다.)

  3. ==============================

    3.이클립스에서 이것을 시도하십시오 : 메뉴에서 File -> Export -> Runnable JAR file을 선택한다.

    이클립스에서 이것을 시도하십시오 : 메뉴에서 File -> Export -> Runnable JAR file을 선택한다.

    사양 창에서 : (다른 공백을 올바르게 채운 후) 라이브러리 처리 : 두 번째 선택

    및 마침

    이제 cmd 또는 terminal에서 다음 명령을 시도하십시오. java -jar [당신의 프로젝트 이름]

    희망이 도움이된다.

  4. ==============================

    4.추가 목표 매개 변수가있는 단일 병에 옵션 1 Maven Compile을 사용할 수 있습니다.

    추가 목표 매개 변수가있는 단일 병에 옵션 1 Maven Compile을 사용할 수 있습니다.

    mvn clean package spring-boot:repackage
    

    Spring 자동로드 기능을 사용하여 독립 실행 형 jar 파일을 만듭니다.

  5. from https://stackoverflow.com/questions/28193970/create-a-single-executable-jar-from-a-spring-based-java-application by cc-by-sa and MIT license