스프링 부트 #7. 스프링부트 CLI
7. 스프링 부트 CLI
Spring Boot CLI는 Spring 애플리케이션을 빠르게 개발하려는 경우 사용할 수있는 명령 행 도구입니다. Groovy 스크립트를 실행할 수 있습니다. 이는 많은 상용구 코드없이 친숙한 Java 유사 구문을 가지고 있음을 의미합니다. 새 프로젝트를 부트 스트랩하거나 자신의 명령을 작성할 수도 있습니다.
7.1. CLI 설치
SDKMAN!을 사용하여 Spring Boot CLI (명령 줄 인터페이스)를 수동으로 설치할 수 있습니다. (SDK 관리자) 또는 OSX 사용자 인 경우 Homebrew 또는 MacPorts를 사용합니다. 포괄적 인 설치 지침은“시작하기”섹션에서 Spring Boot CLI 설치를 참조하십시오 .
7.2. CLI 사용
CLI를 설치 한 spring
후 명령 행에서 Enter를 입력 하고 눌러 CLI를 실행할 수 있습니다 . spring
인수없이 실행하면 다음과 같이 간단한 도움말 화면이 표시됩니다.
$ 봄
사용법 : 봄 [-도움말] [-버전]
<명령> [<args>]
사용 가능한 명령은 다음과 같습니다.
[옵션] <파일> [-] [args] 실행
스프링 그루비 스크립트 실행
... 더 많은 명령 도움말이 여기에 표시됩니다.
spring help
다음 예제와 같이 입력하여 지원되는 명령에 대한 자세한 정보를 얻을 수 있습니다 .
$ 봄 도움말 실행
spring run-스프링 그루비 스크립트 실행
사용법 : spring run [옵션] <파일> [-] [args]
옵션 설명
------ -----------
--autoconfigure [Boolean] 자동 구성 컴파일러 추가
변환 (기본값 : true)
--classpath, -cp 추가 클래스 경로 항목
--no-guess-dependencies 의존성을 추측하려고 시도하지 마십시오
--no-guess-imports 수입을 추측하지 마십시오
-q, --quiet 자동 로깅
-v, --verbose 종속성의 상세 로깅
해결
--watch 지정된 파일을보고 변경 사항을 확인합니다
이 version
명령은 다음과 같이 사용중인 Spring Boot 버전을 확인하는 빠른 방법을 제공합니다.
$ 스프링 버전
Spring CLI v2.3.1.RELEASE
7.2.1. CLI를 사용하여 응용 프로그램 실행
run
명령 을 사용하여 Groovy 소스 코드를 컴파일하고 실행할 수 있습니다 . Spring Boot CLI는 완전히 독립적이므로 외부 Groovy 설치가 필요하지 않습니다.
다음 예제는 Groovy로 작성된 "hello world"웹 애플리케이션을 보여줍니다.
@RestController
class WebApplication {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
응용 프로그램을 컴파일하고 실행하려면 다음 명령을 입력하십시오.
$ 봄 실행 hello.groovy
명령 줄 인수를 응용 프로그램에 전달하려면 --
다음 예제와 같이 명령을 "스프링"명령 인수와 구분하십시오.
$ spring run hello.groovy---server.port = 9000
JVM 명령 행 인수를 설정하기 JAVA_OPTS
위해 다음 예제와 같이 환경 변수를 사용할 수 있습니다 .
$ JAVA_OPTS = -Xmx1024m 스프링 실행 hello.groovy
JAVA_OPTS Microsoft Windows에서 설정 하는 경우와 같은 전체 명령을 인용하십시오 set "JAVA_OPTS=-Xms256m -Xmx2048m" . 그렇게하면 값이 프로세스에 올바르게 전달됩니다. |
"손잡이"의존성 감소
Standard Groovy에는 @Grab
주석이 포함되어있어 타사 라이브러리에 대한 종속성을 선언 할 수 있습니다. 이 유용한 기술을 통해 Groovy는 Maven이나 Gradle과 같은 방식으로 jar를 다운로드 할 수 있지만 빌드 도구를 사용할 필요는 없습니다.
Spring Boot는이 기술을 더 확장하고 코드를 기반으로 어떤 라이브러리를 "잡을"것으로 추론하려고 시도합니다. 예를 들어 WebApplication
이전에 표시된 코드는 @RestController
주석을 사용하기 때문에 Spring Boot는 "Tomcat"및 "Spring MVC"를 가져 옵니다 .
다음 항목은 "잡기 힌트"로 사용됩니다.
아이템 | 횡령 |
---|---|
|
JDBC 애플리케이션. |
|
JMS 애플리케이션. |
|
캐싱 추상화. |
|
JUnit. |
|
RabbitMQ. |
연장하다 |
스팍 테스트. |
|
스프링 배치. |
|
스프링 통합. |
|
Spring MVC + Embedded Tomcat. |
|
봄 보안. |
|
봄 거래 관리. |
CompilerAutoConfiguration 사용자 정의가 어떻게 적용되는지 정확하게 이해하려면 Spring Boot CLI 소스 코드에서 서브 클래스를 참조하십시오 . |
"손잡이"좌표 감소
Spring Boot @Grab
는 그룹이나 버전 (예 :)없이 종속성을 지정할 수 있도록함으로써 Groovy의 표준 지원을 확장 @Grab('freemarker')
합니다. 그렇게하면 Spring Boot의 기본 종속성 메타 데이터를 참조하여 이슈의 그룹과 버전을 추론합니다.
기본 메타 데이터는 사용하는 CLI 버전에 연결됩니다. 새 버전의 CLI로 이동할 때만 변경되므로 종속성 버전이 변경 될 수있는시기를 제어 할 수 있습니다. 기본 메타 데이터에 포함 된 종속성 및 해당 버전을 보여주는 표는 부록 에서 찾을 수 있습니다 . |
기본 수입 명세서
Groovy 코드의 크기를 줄이기 위해 여러 import
명령문이 자동으로 포함됩니다. 공지 사항 앞의 예제가 참조하는 방법 @Component
, @RestController
및 @RequestMapping
정규화 된 이름 또는 사용하지 않고 import
문을.
많은 Spring 주석은 import 명령문 을 사용하지 않고 작동 합니다. 가져 오기를 추가하기 전에 응용 프로그램을 실행하여 무엇이 실패하는지 확인하십시오. |
자동 주요 방법
동등한 Java 응용 프로그램과 달리 스크립트에 public static void main(String[] args)
메소드 를 포함시킬 필요는 없습니다 Groovy
. SpringApplication
컴파일 된 코드가로 작동하는 A 가 자동으로 생성됩니다 source
.
사용자 지정 종속성 관리
기본적으로 CLI는 종속성을 spring-boot-dependencies
해결할 때 선언 된 종속성 관리를 사용합니다 @Grab
. @DependencyManagementBom
주석 을 사용하여 기본 종속성 관리를 대체하는 추가 종속성 관리를 구성 할 수 있습니다 . 주석의 값은 groupId:artifactId:version
하나 이상의 Maven BOM 의 좌표 ( )를 지정해야합니다 .
예를 들어 다음 선언을 고려하십시오.
@DependencyManagementBom("com.example.custom-bom:1.0.0")
위의 선언은 custom-bom-1.0.0.pom
아래 Maven 저장소에서 선택 됩니다 com/example/custom-versions/1.0.0/
.
여러 BOM을 지정하면 다음 예와 같이 BOM을 선언 한 순서대로 적용됩니다.
@DependencyManagementBom(["com.example.custom-bom:1.0.0",
"com.example.another-bom:1.0.0"])
위의 예는의 종속성 관리가의 종속성 관리를 another-bom
재정의 함을 나타냅니다 custom-bom
.
사용할 수있는 @DependencyManagementBom
곳이면 어디든 사용할 수 있습니다 @Grab
. 그러나 종속성 관리의 일관성있는 순서를 보장하기 위해 @DependencyManagementBom
애플리케이션에서 최대 한 번만 사용할 수 있습니다 .
7.2.2. 여러 소스 파일이있는 응용 프로그램
파일 입력을 허용하는 모든 명령에 "쉘 글 로빙"을 사용할 수 있습니다. 이렇게하면 다음 예제와 같이 단일 디렉토리에서 여러 파일을 사용할 수 있습니다.
$ 봄 실행 * .groovy
7.2.3. 응용 프로그램 포장
jar
다음 예제와 같이 명령을 사용하여 응용 프로그램을 자체 포함 된 실행 가능 jar 파일로 패키지 할 수 있습니다 .
$ spring jar my-app.jar * .groovy
결과 jar에는 응용 프로그램 및 모든 응용 프로그램의 종속성을 컴파일하여 생성 된 클래스가 포함되어 있으므로를 사용하여 실행할 수 있습니다 java -jar
. jar 파일에는 응용 프로그램 클래스 경로의 항목도 포함됩니다. 추가 및 사용하여 항아리에 명시 적 경로를 제거 할 수 있습니다 --include
와 --exclude
. 둘 다 쉼표로 구분되어 있으며 기본값에서 제거되어야 함을 나타 내기 위해 접두어를“+”및“-”형식으로 허용합니다. 기본 포함은 다음과 같습니다.
공개 / **, 리소스 / **, 정적 / **, 템플릿 / **, META-INF / **, *
기본 제외는 다음과 같습니다.
. *, 저장소 / **, 빌드 / **, 대상 / **, ** / *. jar, ** / *. groovy
spring help jar
자세한 내용을 보려면 명령 줄에 입력 하십시오.
7.2.4. 새 프로젝트 초기화
이 init
명령을 사용하면 다음 예제와 같이 쉘을 떠나지 않고 start.spring.io 를 사용하여 새 프로젝트를 만들 수 있습니다 .
$ spring init --dependencies = web, data-jpa 내 프로젝트
https://start.spring.io에서 서비스 사용
'/ Users / developer / example / my-project'로 추출 된 프로젝트
앞의 예제 my-project
는 spring-boot-starter-web
and 를 사용하는 Maven 기반 프로젝트 로 디렉토리 를 만듭니다 spring-boot-starter-data-jpa
. --list
다음 예제와 같이 플래그 를 사용하여 서비스 기능을 나열 할 수 있습니다 .
$ spring init-목록
=========================================
https://start.spring.io의 기능
=========================================
사용 가능한 종속성 :
-----------------------
액츄에이터-액추에이터 : 어플리케이션을 모니터링하고 관리 할 수있는 생산 준비 기능
...
웹-웹 : Tomcat 및 spring-webmvc를 포함한 전체 스택 웹 개발 지원
websocket-Websocket : WebSocket 개발 지원
WS-Spring 웹 서비스 지원
사용 가능한 프로젝트 유형 :
------------------------
gradle-build-Gradle 구성 [format : build, build : gradle]
gradle-project-Gradle 프로젝트 [format : project, build : gradle]
maven-build-Maven POM [형식 : 빌드, 빌드 : maven]
maven-project-Maven 프로젝트 [format : project, build : maven] (기본값)
...
이 init
명령은 많은 옵션을 지원합니다. 자세한 내용은 help
출력을 참조하십시오. 예를 들어 다음 명령은 Java 8 및 war
패키징 을 사용하는 Gradle 프로젝트를 만듭니다 .
$ spring init --build = gradle --java-version = 1.8 --dependencies = websocket --packaging = war sample-app.zip
https://start.spring.io에서 서비스 사용
'sample-app.zip'에 저장된 내용
7.2.5. 임베디드 쉘 사용
Spring Boot에는 BASH 및 zsh 셸을위한 명령 줄 완료 스크립트가 포함되어 있습니다. 이러한 쉘 중 하나를 사용하지 않으면 (아마도 Windows 사용자 인 경우) shell
다음 예제와 같이 명령을 사용하여 통합 쉘을 시작할 수 있습니다 .
$ 스프링 쉘
스프링 부트 (v2.3.1.RELEASE)
완료하려면 Tab을 누르십시오. \ 'help'를 입력하고 도움말을 보려면 RETURN을 누르고 종료하려면 \ 'exit'을 누르십시오.
임베디드 쉘 내부에서 다른 명령을 직접 실행할 수 있습니다.
$ 버전
Spring CLI v2.3.1.RELEASE
임베디드 쉘은 tab
완료 뿐만 아니라 ANSI 컬러 출력도 지원합니다 . 기본 명령을 실행해야하는 경우 !
접 두부를 사용할 수 있습니다 . 내장 쉘을 종료하려면을 누르십시오 ctrl-c
.
7.2.6. CLI에 확장 추가
install
명령 을 사용하여 CLI에 확장을 추가 할 수 있습니다 . 이 명령은 group:artifact:version
다음 예제와 같이 형식으로 하나 이상의 아티팩트 좌표 세트를 사용합니다 .
$ spring install com.example : spring-boot-cli-extension : 1.0.0.RELEASE
제공 한 좌표로 식별 된 아티팩트를 설치하는 것 외에도 모든 아티팩트의 종속성도 설치됩니다.
종속성을 설치 제거하려면 uninstall
명령을 사용하십시오 . 이 install
명령 과 마찬가지로 group:artifact:version
다음 예제와 같이 형식으로 하나 이상의 아티팩트 좌표 세트가 사용 됩니다.
$ spring uninstall com.example : spring-boot-cli-extension : 1.0.0.RELEASE
제공 한 좌표와 해당 종속성으로 식별 된 아티팩트를 설치 제거합니다.
모든 추가 종속성을 제거하려면 --all
다음 예와 같이 옵션을 사용할 수 있습니다 .
$ spring uninstall --all
7.3. Groovy Beans DSL을 사용하여 애플리케이션 개발
Spring Framework 4.0은 Grailsbeans{}
에서 빌려온“DSL” 을 기본적으로 지원하며 , 동일한 형식을 사용하여 Groovy 애플리케이션 스크립트에 Bean 정의를 포함시킬 수 있습니다. 다음 예제와 같이 미들웨어 선언과 같은 외부 기능을 포함하는 것이 좋은 방법입니다.
@Configuration(proxyBeanMethods = false)
class Application implements CommandLineRunner {
@Autowired
SharedService service
@Override
void run(String... args) {
println service.message
}
}
import my.company.SharedService
beans {
service(SharedService) {
message = "Hello World"
}
}
beans{}
최상위 레벨에 머무르는 한 동일한 파일에 클래스 선언을 혼합 하거나 원하는 경우 Bean DSL을 별도의 파일에 넣을 수 있습니다.
7.4. settings.xml을 사용하여 CLI 구성
Spring Boot CLI는 Maven의 종속성 분석 엔진 인 Aether를 사용하여 종속성을 해결합니다. CLI는 ~/.m2/settings.xml
Aether를 구성하기 위해 찾은 Maven 구성 을 사용합니다. CLI는 다음 구성 설정을 준수합니다.
- 오프라인
- 거울
- 서버
- 프록시
- 프로필
- 활성화
- 리포지토리
- 활성 프로파일
자세한 내용은 Maven 설정 설명서 를 참조하십시오 .
7.5. 다음 읽을 거리
GitHub 리포지토리에서 사용할 수 있는 샘플 groovy 스크립트가 있으며 Spring Boot CLI를 사용해 볼 수 있습니다. 또한 소스 코드 전체에 광범위한 Javadoc이 있습니다 .
CLI 도구의 한계에 도달 한 경우 응용 프로그램을 전체 Gradle 또는 Maven 내장“Groovy 프로젝트”로 변환하는 것이 좋습니다. 다음 섹션에서는 Gradle 또는 Maven과 함께 사용할 수있는 Spring Boot의 " 빌드 도구 플러그인 "에 대해 설명합니다.
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/#cli