원문 - Spring Boot CLI


    1. 스프링 부트 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)

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-webspring-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)

스프링 부트에는 BASHzsh 셸을 위한 커멘드라인 완성 스크립트가 포함되어 있다. 이러한 셸 중 하나를 사용하지 않는 경우(윈도우 사용자일 수 있음) 다음 예와 같이 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를 누르자.