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 실행 파일 항아리를 만들 수 있습니다 . 이 태스크는 다음 속성을 지원합니다.
속성 | 기술 | 필수 |
---|---|---|
|
작성할 대상 jar 파일 |
예 |
|
Java 클래스 파일의 루트 디렉토리 |
예 |
|
실행할 기본 애플리케이션 클래스 |
아니요 (기본값은 |
다음 중첩 요소를 작업에 사용할 수 있습니다.
요소 | 기술 |
---|---|
|
|
|
응용 프로그램의 런타임 종속성 클래스 경로를 구성하는 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
. 필요한 경우 빌드에서이 작업을 직접 사용할 수도 있습니다. 다음과 같은 속성이 지원됩니다.
속성 | 기술 | 필수 |
---|---|---|
|
Java 클래스 파일의 루트 디렉토리 |
예 ( |
|
|
아니 |
|
결과와 함께 설정해야하는 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-tools
GitHub 에서 모듈을 살펴볼 수 있습니다. 실행 가능한 jar 형식에 대한 자세한 기술 정보 는 부록 에서 다룹니다 .
특정 빌드 관련 질문이있는 경우 "사용 방법 "안내서를 확인하십시오.
Spring Boot Reference DocumentationPhillip 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 FrederickLegal2.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
'IT > SpringBoot' 카테고리의 다른 글
스프링 부트 #9. “How-to” Guides (2) (0) | 2020.06.19 |
---|---|
스프링 부트 #9.“How-to” Guides (1) (0) | 2020.06.19 |
스프링 부트 #7. 스프링부트 CLI (0) | 2020.06.19 |
스프링 부트 #6.애플리케이션 배포 (0) | 2020.06.19 |
스프링 부트 #5.7. Auditing (0) | 2020.06.19 |