建立 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 JettyApache 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 應用程式。