IT/SpringBoot

스프링 부트 #8. 빌드 도구

blogood 2020. 6. 19. 22:08
반응형

8. 빌드 도구 플러그인

Spring Boot는 Maven 및 Gradle 용 빌드 도구 플러그인을 제공합니다. 플러그인은 실행 가능한 jar 패키징을 포함하여 다양한 기능을 제공합니다. 이 섹션에서는 두 플러그인에 대한 자세한 내용과 지원되지 않는 빌드 시스템을 확장해야하는 경우 도움이됩니다. 방금 시작한 경우, 먼저 " Spring Boot 사용 "섹션 에서 " Build Systems " 를 읽으십시오 .

8.1. 스프링 부트 메이븐 플러그인

Spring Boot Maven 플러그인은 Maven에서 Spring Boot 지원을 제공하여 실행 가능한 jar 또는 war 아카이브를 패키지하고 애플리케이션을 "제자리에서"실행할 수 있도록합니다. 사용하려면 Maven 3.2 이상을 사용해야합니다.

자세한 내용은 플러그인 설명서를 참조하십시오.

8.2. 스프링 부트 그레들 플러그인

Spring Boot Gradle 플러그인은 Gradle에서 Spring Boot 지원을 제공하여 실행 가능한 jar 또는 war 아카이브를 패키지하고 Spring Boot 애플리케이션을 실행하고에서 제공하는 종속성 관리를 사용할 수 있습니다 spring-boot-dependencies. Gradle 6 (6.3 이상)이 필요합니다. Gradle 5.6.x도 지원되지만이 지원은 더 이상 사용되지 않으며 향후 릴리스에서 제거 될 예정입니다. 자세한 내용은 플러그인 설명서를 참조하십시오.

8.3. 스프링 부트 AntLib 모듈

Spring Boot AntLib 모듈은 Apache Ant에 대한 기본 Spring Boot 지원을 제공합니다. 모듈을 사용하여 실행 가능한 jar을 작성할 수 있습니다. 모듈을 사용하려면 다음 예제와 같이에 추가 spring-boot네임 스페이스 를 선언해야합니다 build.xml.

<project xmlns:ivy="antlib:org.apache.ivy.ant"
    xmlns:spring-boot="antlib:org.springframework.boot.ant"
    name="myapp" default="build">
    ...
</project>

-lib다음 예제와 같이 옵션을 사용하여 Ant를 시작해야합니다 .

$ ant -lib <spring-boot-antlib-2.3.1.RELEASE.jar를 포함하는 디렉토리>
  "Spring Boot 사용"섹션에는 Apache Ant를 사용spring-boot-antlib 하는보다 완전한 예가 포함 되어 있습니다.

8.3.1. 스프링 부트 개미 작업

일단 spring-boot-antlib네임 스페이스가 선언 된 다음과 같은 추가 작업을 사용할 수 있습니다 :

"exejar"작업 사용

exejar작업을 사용하여 Spring Boot 실행 파일 항아리를 만들 수 있습니다 . 이 태스크는 다음 속성을 지원합니다.

속성 기술 필수

destfile

작성할 대상 jar 파일

classes

Java 클래스 파일의 루트 디렉토리

start-class

실행할 기본 애플리케이션 클래스

아니요 (기본값은 main메소드 를 선언 한 첫 번째 클래스 임)

다음 중첩 요소를 작업에 사용할 수 있습니다.

요소 기술

resources

작성된 jar 파일의 컨텐츠에 추가되어야 하는 자원 세트를 설명하는 하나 이상의 자원 콜렉션 .

lib

응용 프로그램의 런타임 종속성 클래스 경로를 구성하는 jar 라이브러리 세트에 추가되어야하는 하나 이상의 자원 콜렉션 .

이 섹션에서는 Ant 태스크의 두 가지 예를 보여줍니다.

출발 클래스 지정
<spring-boot:exejar destfile="target/my-application.jar"
        classes="target/classes" start-class="com.example.MyApplication">
    <resources>
        <fileset dir="src/main/resources" />
    </resources>
    <lib>
        <fileset dir="lib" />
    </lib>
</spring-boot:exejar>
시작 클래스 감지
<exejar destfile="target/my-application.jar" classes="target/classes">
    <lib>
        <fileset dir="lib" />
    </lib>
</exejar>

8.3.2. “findmainclass”작업 사용

findmainclass작업은 내부적으로 exejar선언 된 클래스를 찾기 위해 사용됩니다 main. 필요한 경우 빌드에서이 작업을 직접 사용할 수도 있습니다. 다음과 같은 속성이 지원됩니다.

속성 기술 필수

classesroot

Java 클래스 파일의 루트 디렉토리

( mainclass지정 되지 않은 경우)

mainclass

main클래스 검색 을 단락시키는 데 사용할 수 있습니다

아니

property

결과와 함께 설정해야하는 Ant 특성

아니요 (지정하지 않은 경우 결과가 기록됨)

이 섹션에는를 사용하는 세 가지 예가 있습니다 findmainclass.

찾기 및 기록
<findmainclass classesroot="target/classes" />
찾기 및 설정
<findmainclass classesroot="target/classes" property="main-class" />
재정의 및 설정
<findmainclass mainclass="com.example.MainClass" property="main-class" />

8.4. 다른 빌드 시스템 지원

Maven, Gradle 또는 Ant 이외의 빌드 도구를 사용하려면 고유 한 플러그인을 개발해야합니다. 실행 가능한 jar은 특정 형식을 따라야하며 특정 항목은 압축되지 않은 형식으로 작성해야합니다 ( 자세한 내용은 부록 의 " 실행 가능한 jar 형식 "섹션 참조).

Spring Boot Maven 및 Gradle 플러그인은 spring-boot-loader-tools실제로 jar를 생성 하는 데 사용 합니다. 필요한 경우이 라이브러리를 직접 사용할 수 있습니다.

8.4.1. 아카이브 재 포장

기존 아카이브가 자체 포함 된 실행 가능한 아카이브가되도록 기존 패키지를 다시 패키지하려면을 사용하십시오 org.springframework.boot.loader.tools.Repackager. Repackager클래스는 기존의 항아리 또는 전쟁 아카이브를 참조하는 하나의 생성자 인수를합니다. 사용 가능한 두 가지 repackage()방법 중 하나를 사용 하여 원본 파일을 바꾸거나 새 대상에 씁니다. 재 포장기 실행 전에 다양한 설정을 구성 할 수도 있습니다.

8.4.2. 중첩 라이브러리

아카이브를 다시 패키지 할 때 org.springframework.boot.loader.tools.Libraries인터페이스 를 사용하여 종속성 파일에 대한 참조를 포함 할 수 있습니다 . 우리 Libraries는 일반적으로 빌드 시스템에 따라 구현되는 구체적인 구현을 제공하지 않습니다 .

아카이브에 이미 라이브러리가 포함 된 경우을 사용할 수 있습니다 Libraries.NONE.

8.4.3. 메인 클래스 찾기

Repackager.setMainClass()기본 클래스를 지정하는 데 사용하지 않으면 리 패키저는 ASM사용 하여 클래스 파일을 읽고 public static void main(String[] args)메소드 로 적합한 클래스를 찾습니다 . 둘 이상의 후보가 발견되면 예외가 발생합니다.

8.4.4. 재 포장 구현 예

다음 예제는 일반적인 리 패키지 구현을 보여줍니다.

Repackager repackager = new Repackager(sourceJarFile);
repackager.setBackupSource(false);
repackager.repackage(new Libraries() {
            @Override
            public void doWithLibraries(LibraryCallback callback) throws IOException {
                // Build system specific implementation, callback for each dependency
                // callback.library(new Library(nestedFile, LibraryScope.COMPILE));
            }
        });

8.5. 다음 읽을 거리

빌드 도구 플러그인의 작동 방식에 관심이 있다면 spring-boot-toolsGitHub 에서 모듈을 살펴볼 수 있습니다. 실행 가능한 jar 형식에 대한 자세한 기술 정보 는 부록 에서 다룹니다 .

특정 빌드 관련 질문이있는 경우 "사용 방법 "안내서를 확인하십시오.

 

Spring Boot Reference Documentation

Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott Frederick

2.3.1.RELEASE

Copyright © 2012-2020

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

출처 : https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#build-tool-plugins

반응형