組建專案

目前還在你自己的電腦,不需要特地跑到Server上執行。

使用mvnw指令組建專案

在組建(build)專案前,我們要先確認有沒有安裝JDK,請根據你的電腦環境選擇對應的安裝檔(大部分人選擇Java SE Development Kit 17.0.9 Windows x64 Installer即可,⚠️不要下載成JRE!!!),可至以下網站下載安裝,當然除了Oracle官方,你也可以使用OpenJDK提供的JDK。

確認安裝JDK後,我們需要輸入指令來組建Spring Boot專案,組建成功後會得到JAR檔,在IDEA的左下角可以輸入指令。

請確認是在complete資料夾下執行指令

根據終端機的不同,輸入指令

如果出現下面的錯誤,請設定JAVA_HOME環境變數

值請填寫JDK的安裝路徑

如出現此視窗請按允許

你有很高的機率會遇到下列錯誤,這是因為我們之前有在資料庫新增資料(資料庫不是空的,裡面可能會有之前測試時新增的顧客),與程式的預期的結果不符(你可以查看src/test/java/com/example/crudwithvaadin資料夾,裡面有Spring團隊寫的測試,以下圖的錯誤訊息來說,測試預期只會有Josh這位顧客,但現在資料庫有3個Josh,所以測試失敗)。

組建失敗
測試程式碼

解決方法之一為修改application.properties檔案底下的spring.jpa.hibernate.ddl-auto,從update改成create-drop,再執行一次指令。

請改成上圖所示

順利的話,你會看到下列畫面

組建成功

接著請再修改application.properties檔案底下的spring.jpa.hibernate.ddl-auto,從create-drop改成update,再執行一次指令。

一樣順利的話你會看到上圖的成功畫面。

circle-info

生產環境下,請將spring.jpa.hibernate.ddl-auto設為update。

最後,在target資料夾下,你可以找到crud-with-vaadin-initial-0.0.1-SNAPSHOT.jar這個JAR檔

執行JAR檔及測試程式

接下來我們要測試能不能執行剛剛組建成功的JAR檔,如果你有在IDEA裡面執行程式的話,請先停止IDEA內執行的程式,這是為了避免兩個程式同時使用同一個資料庫。

新增程式用的資料夾

請新增一個空資料夾,把剛剛組建成功的JAR檔複製到空資料夾。

執行Java指令

在剛剛新增的資料夾底下開啟終端機(CMD、PowerShell),執行Java指令

執行程式時的終端機截圖

另外如果要終止程式,請在終端機輸入Crtl + c,可參考下圖,再按一次Enter即可繼續輸入指令。

終止程式後的終端機截圖

打開瀏覽器

前往http://localhost:8080arrow-up-right

預期的結果,只有程式初始化新增的5個顧客

如果你發現裡面除了預設的5個顧客外,還有其他顧客,你可以修改application.properties檔案底下的spring.jpa.hibernate.ddl-auto,從update改成create-drop,並在IDEA裡面執行程式(請先終止剛剛使用Java指令執行的程式),之後終止IDEA裡面執行的程式。

在IDEA裡面執行程式

回到剛剛的終端機重新執行Java指令,你會發現跟上面的圖片一樣的結果(只有預設的5個顧客)。

測試是否能正常儲存資料

你可以點擊New customer,並在下方欄位輸入測試顧客的名字

新增測試顧客

你會發現畫面上多了剛剛新增的測試顧客

畫面上出現了剛剛新增的測試顧客

為了確定資料有成功存入資料庫,我們將程式停止,再重新執行一次,如果跟上面的結果一樣,表示資料成功儲存到資料庫裡面了。

你也可以透過資料庫的管理軟體(如: phpMyAdmin)連線到資料庫查看資料庫的內容,也可以透過管理軟體修改顧客名字後回來網頁查看資料是否有更新。

circle-exclamation
circle-info

剛剛一直修改application.properties檔案底下的spring.jpa.hibernate.ddl-auto的目的是清空資料庫內的資料(因為我們在之前的章節有新增顧客資料到資料庫,需要清空資料庫,才能取得預期的結果),當值為update時,表示程式只會更新資料庫,也就是之前的資料會保留,通常在生產環境下使用,另一個值是create-drop,表示在開始執行程式時會生成資料(先清除原有的table內的資料,根據程式新增table及資料,像是我們的範例程式就是新增5個顧客),程式結束時會刪除資料(刪除程式新增的table),通常會用在開發環境。

Last updated