使用 SpringSource Tool Suite 2.3.3.M1 搭配 Roo 與 GWT

工程 | Christian Dupuis | 2010年06月02日 | ...

各位可能已經聽說 Google I/O 大會上關於 Spring、Roo、STS 和 GWT 的公告。BenRod 在他們各自的部落格 文章中已經介紹過。如果你錯過了主題演講,我強烈建議觀看 YouTube 上的錄影回放以趕上進度(相關部分從錄影的 1:09:00 開始)。

今天我想提供一些詳細步驟和說明,關於如何使用 Roo 和 STS 建立你的第一個 GWT 應用程式。

安裝

在我們啟動 Roo shell 並開始輸入指令之前,我們需要下載並安裝所有先決條件。雖然建立可以在雲端上運行的進階單頁應用程式需要許多組件,但你實際上只需要下載適用於你作業系統的 STS 2.3.3.M1 套件。STS 安裝包含 Roo 1.1.0.M1、帶有 Spring Insight 的 tc Server Developer Edition(Speed Tracer 整合需要)、Maven 2.2 以及 Google Plugin for Eclipse (GPE) 的存取權。

  1. springsource.com 下載 STS 2.3.3.M1。
  2. 執行安裝程式或解壓縮下載的壓縮檔。依照安裝說明進行操作。
  3. 啟動 STS 並打開儀表板(「Help -> Dashboard」)。
  4. 從儀表板的 Extension 標籤安裝「Google Plugin for Eclipse」和「DataNucleus Plugin」。
  5. 出現提示時重新啟動。

建立 GWT scaffold 應用程式

安裝 STS 後,我們準備好啟動 Roo 並建立我們的應用程式。如果你想查看主題演講中使用的應用程式,請按照以下步驟操作

  1. 在你的作業系統命令提示字元下,建立一個新的空目錄並切換到該目錄。
  2. 輸入 "roo" 並按下 Enter,啟動 Roo 1.1.0.M1。查看 Roo 啟動時在 shell banner 中顯示的版本號。它應該顯示 "1.1.0.M1 [rev 3a0b8a3]"。為了你的方便,Roo 已與 STS 一起安裝在同一個資料夾中。
  3. 輸入 "script expenses.roo"。這將運行提供的 Roo 腳本,並建立 Ben 在主題演講中使用的基本費用追蹤範例應用程式。
  4. 輸入 "quit" 以退出 Roo shell。

到目前為止,你已經擁有一個完整可運作的 Spring & GWT 2.1 應用程式。隨意查看 Roo 為你產生的程式碼。如果你想了解更多關於此 GWT 應用程式底層架構的資訊,我推薦 Ray Ryan 的 Google I/O 會議。查看 I/O 網站提供的會議錄影和投影片。

執行應用程式

感謝 Roo,你可以輕鬆地在本機執行產生的應用程式。如果你的系統上安裝了 Maven,只需在你的作業系統命令提示字元下輸入 "mvn gwt:run"。只需確保你仍然在你建立專案的同一個目錄中。這將啟動 GWT 開發模式,你可以從中輕鬆地在你的瀏覽器中載入 GWT 應用程式。為了使用 GWT 開發模式,你需要安裝相關的瀏覽器外掛程式。如果你的瀏覽器尚未安裝外掛程式,它會提示你安裝。

將專案匯入 STS

與 Google 的 Google Plugin for Eclipse (GPE) 團隊合作,我們增強了 STS,以便你可以輕鬆地將建立的 Roo 專案匯入到你的 Eclipse 環境中。STS 將自動配置你的專案,使其可以與內建的 Maven 和 GWT 支援一起使用,而無需離開你的 IDE。

從 STS 使用「File -> Import ... -> Maven -> Existing Maven Project」匯入專案。這將自動配置所有必需的專案設定,安裝 classpath 容器並啟動 Roo shell。

從 STS 內部執行應用程式

使用 Google 的 GWT 工具,現在可以非常容易地從 STS 內部啟動應用程式。這讓你能夠除錯你的伺服器端程式碼,更重要的是,也能除錯你的前端 GWT Java 程式碼。從專案的上下文選單中選擇「Debug As -> Web Application」。請選擇「ApplicationScaffold.html」html 頁面以啟動並點擊「OK」。只需確認「WAR Directory Selection」對話框以接受預設值。

在「Console」視圖中,你現在可以看到嵌入式 GWT 開發模式正在啟動。此外,GPE 的「Development Mode」視圖將會出現,讓你能夠輕鬆存取啟動的應用程式。請參見下面的螢幕截圖。

GWT Development Mode

此時,隨時新增中斷點並使用 Eclipse 除錯器來熟悉產生的應用程式。

為了試用 Roo 出色的往返支援,請打開「Employee」Java 原始碼檔案並新增一個新的欄位。例如,新增一個「private String comment」欄位並儲存檔案。注意 Roo 將如何立即更新 GWT 應用程式,以將新欄位納入 UI 和後端程式碼中。你可以從「Roo Shell」視圖中觀察到這一點。請注意,STS 整合包含指向 Roo 編輯檔案的連結,因此你可以打開它們並查看變更。

Roo Shell

如果你此時仍然讓開發模式伺服器運行,請打開「Development Mode」視圖並點擊視圖工具列中的「Refresh」圖示。深呼吸一下 - 大約 2-3 秒 - 返回你的瀏覽器並點擊「重新整理」。導航到「Employee」畫面,並注意 UI 上新增加的欄位。你可以通過建立一個新的 Employee 並填寫「comment」欄位來驗證伺服器程式碼已完全重新整理(包括正確的持久性)。

部署到 Google App Engine

我們收到了很多關於如何將 scaffolded 應用程式部署到 Google App Engine 的問題;以及它是否在 GAE 上運行。它當然可以,並且可以在這裡進行測試。

部署非常簡單,可以從 STS 內部或從命令列完成。在以下章節中,我將展示如何從命令列將部署到 GAE。

  1. 首先,你可能想要從範例應用程式使用的記憶體內 Hypersonic 資料庫切換到基於 BigTable 的 Google Datastore。為此,從命令列啟動 Roo shell 並執行以下命令:「persistence setup --database GOOGLE_APP_ENGINE --provider DATANUCLEUS」。
  2. 接下來,我們需要指定 GAE 應用程式名稱。這可以通過編輯「src/main/webapp/WEB-INF/appengine-web.xml」檔案來完成。請將應用程式名稱設定為你 GAE 帳戶中現有的應用程式。或者,你可以在輸入「persistence setup」命令時通過「--applicationId」選項指定應用程式名稱。
  3. 現在部署到 GAE 只需運行「mvn gwt:compile gae:deploy -DskipTests」(「-DskipTests」僅在 Roo 1.1.0.M1 中是必需的。這已經 被修復,並且對於 Roo 1.1.0.M2 將不再需要)。

我希望這些說明和步驟對你有所幫助,並鼓勵更多人嘗試 Roo 對 GWT 的支援。請記住,GWT、Roo 和 STS 仍處於 Milestone 1 階段,因此你實際上可能會遇到限制或意外問題。在這種情況下,請在 Spring 社群 RooSTS 論壇上發文。我們 SpringSource 和 Google 工程師很樂意提供幫助,並期待你的回饋。

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速你的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進制檔案。

瞭解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部