Spring Boot CLI 安裝與使用

安裝與使用 Spring Boot CLI 工具。

og-spring

安裝環境

我的電腦環境上 Mac,所以就是用 Homebrew 來安裝。 依照官方文件的做法是這樣的:

$ brew tap pivotal/tap # 切換 Homebrew 倉庫

$ brew install springboot # 安裝 Spring Boot CLI

建立工具說明

執行 spring init

$ spring init
Using service at https://start.spring.io
Content saved to 'demo.zip'

這樣就會在目錄下產生一個 demo.zip 的檔案, 這個 demo.zip 檔案解開後就是 Spring Boot CLI 幫我們建立的專案了。

CLI 建立專案設定

但是不可能每次都簡簡單單只用 spring init 來建立專案,更時候只用 spring init 是不能夠滿處我們的需求的。

那要如何客製化 Spring Boot CLI 所產生的內容呢? 我們可以透過 spring help init 來取得說明,方便我們做一些參數的設定。

$ spring help init

spring init - Initialize a new project using Spring Initializr (start.spring.io)

usage: spring init [options] [location]

Option                       Description
------                       -----------
-a, --artifactId <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
# ... 略過 ...

哈哈! 看到一堆火星文 不過這些是非常有用的資訊哦! 我們的 groupId 、artifactId、dependencies 等等的設定方法,都可以在這邊查到使用方法。如果真的要完全只用 Spring Boot CLI 來進行專案設定,是一定需要反覆的看這些資訊的!

來個範例解說吧:

$ spring init
 -j 11 \
 -g com.judysocute \
 -a first-prj \
 -p jar \
 -d devtools,lombok,thymeleaf,web
  • -j : 決定我們的 Java 版本,這邊指定到 JAVA 11
  • -g : groupId
  • -a : artifactId ( 這個參數會影響輸出出來的檔名唷!此例會輸出 first-prj.zip )
  • -p : jar 專案打包的類型
  • -d : 要引入的相依專案

這樣專案就建立起來了。 接下來解壓縮檔案來看看裡面的結構。

專案結構

.
├── HELP.md
├── first-prj.iml
├── mvnw          # 這兩個是 Maven 包裝器 ( wrapper )腳本,
├── mvnw.cmd      # 藉由這些腳本,即使我們的機器上沒有 Maven 環境也可以構建項目。
│
├── pom.xml       # Maven 專案模型
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── judysocute
│   │   │           └── DemoApplication.java # Main 方法位置,透過它來啟動專案
│   │   └── resources
│   │       └── static      # 靜態文件
│   │       └── templates   # 用來渲染內容到瀏覽器的模板文件
│   │       └── application.properties # 預設是空的,他用來提供指定配置屬性
│   └── test # 測試目錄

有可能你建立出來的專案結構會跟我少為一點點不同,主要的不同會是 DemoApplication.java 的位置,它預設會多一層 package 在裡面。

以我的案例是: src/test/java/com/judysocute/firstprj/DemoApplication.java 但是我不太喜歡把 articleId 放到專案目錄,就自己手動把 articleId 那層拿掉了。 ( 個人習慣 )


常常在學的時候會看到很多 Spring Boot 工具, 有 Spring Tool Suite 、Spring Initializr 等等的工具...

它們都是非常好的工具,可以有效的提升建立專案的速度,有簡潔好用的介面可以讓我們使用 但是我自己是 IntelliJ Community 的長期用戶,Spring Tool Suite 不能裝、要有內建的 Spring Boot 支援又好像只能付費升級到專業版, 這種要費的建立專案方式,我實在是不太想要在初學還沒有感受到它的好處之前就花下去。 ( 尤其 JetBrains 的價格真的是滿高的~ )

我平常在前端建立專案也都是用 Vue CLI,所以就挑了一個建立流程差不多的工具來使用。 希望能多少幫助到跟我一樣習慣的人。