- 스프링 부트 CLI
- 16.1. CLI 설치(Installing the CLI)
- 16.2. CLI 사용(Using the CLI)
- 16.2.1. 새 프로젝트 초기화(Initialize a New Project)
- 16.2.2. 임베디드 쉘 사용(Using the Embedded Shell)
- 스프링 부트 CLI
16. 스프링 부트 CLI
스프링 부트 CLI는 start.spring.io
에서 새 프로젝트를 부트스트랩하거나 비밀번호를 인코딩하는 데 사용할 수 있는 커멘드라인 도구다.
16.1. CLI 설치(Installing the CLI)
스프링 부트 CLI(명령줄 인터페이스)는 SDKMAN
을 사용하여 수동으로 설치할 수 있다! (SDK Manager) 또는 OSX 사용자인 경우 Homebrew
또는 MacPorts
를 사용한다. 포괄적인 설치 가이드라인은 “시작하기” 장에서 스프링 부트 CLI 설치를 참고하자.
16.2. CLI 사용(Using the CLI)
CLI를 설치한 후에는 커맨드라인에서 spring
을 입력하고 Enter
를 눌러 실행할 수 있다. 아규먼트 없이 spring
을 실행하면 다음과 같은 도움말 화면이 표시된다.
$ spring
usage: spring [--help] [--version]
<command> [<args>]
Available commands are:
init [options] [location]
Initialize a new project using Spring Initializr (start.spring.io)
encodepassword [options] <password to encode>
Encode a password for use with Spring Security
shell
Start a nested shell
Common options:
--debug Verbose mode
Print additional status information for the command you are running
See 'spring help <command>' for more information on a specific command.
다음 예제와 같이 spring help
를 입력하여 지원되는 명령에 대한 자세한 내용을 얻을 수 있다.
$ spring help init
spring init - Initialize a new project using Spring Initializr (start.spring.io)
usage: spring init [options] [location]
Option Description
------ -----------
-a, --artifact-id <String> Project coordinates; infer archive name (for
example 'test')
-b, --boot-version <String> Spring Boot version (for example '1.2.0.RELEASE')
--build <String> Build system to use (for example 'maven' or
'gradle') (default: maven)
-d, --dependencies <String> Comma-separated list of dependency identifiers to
include in the generated project
--description <String> Project description
-f, --force Force overwrite of existing files
--format <String> Format of the generated content (for example
'build' for a build file, 'project' for a
project archive) (default: project)
-g, --group-id <String> Project coordinates (for example 'org.test')
-j, --java-version <String> Language level (for example '1.8')
-l, --language <String> Programming language (for example 'java')
--list List the capabilities of the service. Use it to
discover the dependencies and the types that are
available
-n, --name <String> Project name; infer application name
-p, --packaging <String> Project packaging (for example 'jar')
--package-name <String> Package name
-t, --type <String> Project type. Not normally needed if you use --
build and/or --format. Check the capabilities of
the service (--list) for more details
--target <String> URL of the service to use (default: https://start.
spring.io)
-v, --version <String> Project version (for example '0.0.1-SNAPSHOT')
-x, --extract Extract the project archive. Inferred if a
location is specified without an extension
examples:
To list all the capabilities of the service:
$ spring init --list
To creates a default project:
$ spring init
To create a web my-app.zip:
$ spring init -d=web my-app.zip
To create a web/data-jpa gradle project unpacked:
$ spring init -d=web,jpa --build=gradle my-dir
version
명령은 다음과 같이 사용 중인 스프링 부트의 버전을 확인하는 빠른 방법을 제공한다.
$ spring version
Spring CLI v3.1.1
16.2.1. 새 프로젝트 초기화(Initialize a New Project)
init
명령을 사용하면 다음 예제와 같이 셸을 떠나지 않고 start.spring.io
를 사용하여 새 프로젝트를 생성할 수 있다.
$ spring init --dependencies=web,data-jpa my-project
Using service at https://start.spring.io
Project extracted to '/Users/developer/example/my-project'
이전 예제에서는 spring-boot-starter-web
및 spring-boot-starter-data-jpa
를 사용하는 메이븐 기반 프로젝트로 my-project
디렉토리를 생성한다. 다음 예제와 같이 --list
플래그를 사용하여 서비스의 기능을 나열할 수 있다.
$ spring init --list
=======================================
Capabilities of https://start.spring.io
=======================================
Available dependencies:
-----------------------
actuator - Actuator: Production ready features to help you monitor and manage your
application
...
web - Web: Support for full-stack web development, including Tomcat and spring-webmvc
websocket - Websocket: Support for WebSocket development
ws - WS: Support for Spring Web Services
Available project types:
------------------------
gradle-build - Gradle Config [format:build, build:gradle]
gradle-project - Gradle Project [format:project, build:gradle]
maven-build - Maven POM [format:build, build:maven]
maven-project - Maven Project [format:project, build:maven] (default)
...
init
명령은 다양한 옵션을 지원한다. 자세한 내용은 도움말 출력을 참고하자. 예를 들어 다음 명령은 자바 17 및 war 패키징을 사용하는 그레이들 프로젝트를 만든다.
$ spring init --build=gradle --java-version=17 --dependencies=websocket
--packaging=war sample-app.zip
Using service at https://start.spring.io
Content saved to 'sample-app.zip'
16.2.2. 임베디드 쉘 사용(Using the Embedded Shell)
스프링 부트에는 BASH
및 zsh
셸을 위한 커멘드라인 완성 스크립트가 포함되어 있다. 이러한 셸 중 하나를 사용하지 않는 경우(윈도우 사용자일 수 있음) 다음 예와 같이 shell
명령을 사용하여 통합 셸을 시작할 수 있다.
$ spring shell
Spring Boot (v3.1.1)
Hit TAB to complete. Type \'help' and hit RETURN for help, and \'exit' to quit.
임베디드 셸 내부에서 다른 명령을 직접 실행할 수 있다.
$ version
Spring CLI v3.1.1
임베디드 셸은 ANSI 색상 출력과 tab
완성을 지원한다. 네이티브 커맨드을 실행해야 하는 경우, !
접두사. 내장된 쉘을 종료하려면 ctrl-c
를 누르자.