建立 Java Web 應用程式
您的公司目前正在內部伺服器上執行數個 Java Web 應用程式。 為了減少與維護這些伺服器相關的高昂成本,公司想要將 Web 應用程式移轉至 Azure App Service。
開發小組有使用 Maven 來建立傳統型應用程式的體驗,且您已使用 Maven 將 Java 專案的建置程序自動化。 您了解 Maven 會使用專案的外掛程式來新增額外功能,而且您想要使用原型來建立可部署至 Azure App Service 的 Web 應用程式。
在此單元中,您將會回顧 Maven 和原型如何協助建立 Java Web 應用程式。 您將瞭解如何建立小型 Java Web 應用程式,並在本機執行。 然後,您將瞭解要新增至 [專案物件模型 (POM)] 檔案的內容,以啟用新應用程式的本機測試。
使用 Maven 將 Java Web 應用程式的建置自動化
Maven 是最常使用的 Java 建置工具,您可以用以建置及管理任何 Java 型專案。 其有助簡化開發人員使用標準方式建置 Java 專案的程序,以建置專案、專案構成項目的明確定義、發佈專案資訊的簡易方法,以及跨多個專案共用 JAR 的方式。 Maven 的目標是:
- 讓建置程序更加容易。
- 以透明方式移轉至新功能。
- 提供統一的建置系統。
- 實作有關開發最佳做法的指導方針。
何謂原型?
Maven 建立者需要一種方法來提供一致的最佳做法,供開發人員在建構新專案時遵循,同時他們發現不同種類的專案之間有幾個相似之處。 建立者會使用此資訊,將這些專案類型定義為範本 (稱為 原型),而 Maven 會使用這些範本來快速建立新專案的 Scaffolding。 以下是一些常見原型的範例:
原型 | 描述 |
---|---|
maven-archetype-archetype |
產生原型專案 |
maven-archetype-mojo |
產生範例 Maven 外掛程式 |
maven-archetype-plugin |
產生 Maven 外掛程式 |
maven-archetype-plugin-site |
產生 Maven 外掛程式網站 |
maven-archetype-quickstart |
產生 Maven 專案 |
maven-archetype-simple |
產生簡單的 Maven 專案 |
maven-archetype-site |
產生 Maven 網站,該網站會示範一些支援的文件類型,例如 APT、Xdoc 和 FML |
maven-archetype-site-simple |
產生簡單的 Maven 網站 |
maven-archetype-webapp |
產生 Maven Web 應用程式專案 |
在下一個練習中,您將建立可部署至 Azure 的 Web 應用程式。 例如,若要使用 Maven 建立新的 Java Web 應用程式,可使用下列語法:
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
執行上述命令會使用下列內容來建立專案目錄結構:
何謂專案物件模型 (POM) 檔案?
Maven 專案的其中一個核心元件是專案物件模型 (POM) 檔案,這是名為 pom.xml
的 XML 文件,位於專案的目錄樹狀結構中。 POM 檔案包含專案的屬性、相依性、組建階段、外掛程式和目標。 當建置應用程式時,Maven 會負責管理相依性。
Maven 是以外掛程式架構為建置基礎,而將外掛程式新增至 POM 檔案是開發人員為其專案定義目標的方式。 當執行 Maven 時,可以使用 mvn [plugin-name]:[goal-name]
的語法來執行特定目標,而 Maven 會執行所有目標,一直到所指定的 [goal-name]
為止。
下列範例說明使用 mvn archetype:generate
命令搭配 maven-archetype-webapp
原型 (位於此單元的上一節中) 所產生的 pom.xml 檔案內容。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft.example</groupId>
<artifactId>MyWebApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>MyWebApp Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
...
</pluginManagement>
</build>
</project>
如何將外掛程式新增至 Maven 專案
若要將外掛程式新增至 Maven 專案,您需要將該外掛程式的特定 XML 新增至 pom.xml 檔案。 有兩個實用的外掛程式可讓開發人員在其電腦本機上執行 Web 應用程式:Eclipse Jetty 與 Apache Tomcat。 Azure App Service 外掛程式支援這兩種 Web 伺服器。 若要將這些伺服器的其中一種新增至專案,可將外掛程式的必要 XML 新增至 <plugins>
標記。
例如,若要新增 Tomcat 11 外掛程式,您可如下列範例所示新增 XML:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
注意
若要尋找外掛程式及其相關資訊,您可以搜尋中央存放庫 (網址是 https://search.maven.org/)。
在新增 Tomcat 外掛程式的 XML 後,<build>
元素應該類似下列範例:
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
將 Tomcat 外掛程式新增至專案之後,可使用下列 Maven 命令來建置專案、啟動 Tomcat 伺服器,並測試 Web 應用程式:
mvn package cargo:run
此命令會建置應用程式、在預設連接埠 8080 上啟動 Tomcat 伺服器,然後載入 Tomcat 伺服器。 若要載入 Web 應用程式,請瀏覽至 http://localhost:8080/MyWebApp
(MyWebApp 是在 pom.xml 的 <finalName>
元素中指定)。
當您載入 Web 應用程式時,將會顯示專案 src\webapp 資料夾的預設 index.jsp 頁面。
在下一個練習中,您將使用 Maven 來建立 Java Web 應用程式。