Skapa en Java-webbapp

Slutförd

Ditt företag kör för närvarande flera Java-webbappar på interna servrar. För att minska de höga kostnaderna för att underhålla dessa servrar vill företaget migrera dina webbappar till Azure App Service.

Utvecklingsteamet har erfarenhet av att använda Maven för att skapa skrivbordsappar och du använder redan Maven för att automatisera byggprocessen för dina Java-projekt. Du förstår att Maven använder plugin-program för projekt för att lägga till extra funktioner, och du vill använda en arketyp för att skapa en webbapp som du kan distribuera till Azure App Service.

I den här lektionen går du igenom hur Maven och arketyper kan hjälpa dig att skapa Java-webbappar. Du får lära dig hur du skapar en liten Java-webbapp och kör den lokalt. Sedan får du lära dig vad du ska lägga till i POM-filen (Project Object Model) för att aktivera lokal testning för din nya app.

Använda Maven för att automatisera skapandet av Java-webbappar

Maven är det mest använda Java-byggverktyget och du kan använda det för att skapa och hantera alla Java-baserade projekt. Det hjälper till att effektivisera processerna för hur utvecklare skapar Java-projekt med ett standardsätt för att skapa projekten, en tydlig definition av vad projektet bestod av, ett enkelt sätt att publicera projektinformation och ett sätt att dela JAR i flera projekt. Mavens mål är att:

  • Gör byggprocessen enklare.
  • Migrera transparent till nya funktioner.
  • Tillhandahålla ett enhetligt byggsystem.
  • Implementera riktlinjer om bästa praxis för utveckling.

Vad är arketyper?

Mavens skapare behövde ett sätt att tillhandahålla en konsekvent metod att följa när utvecklare strukturerar nya projekt, och de upptäckte att det finns flera likheter mellan olika typer av projekt. Skaparna använde den här informationen för att definiera dessa projekttyper som mallar som kallas arketyper, som Maven använder för att snabbt skapa byggnadsställningar för nya projekt. Här är flera exempel på vanliga arketyper:

Arketyp Beskrivning
maven-archetype-archetype Genererar ett arketypsprojekt
maven-archetype-mojo Genererar ett Maven-exempel-plugin-program
maven-archetype-plugin Genererar ett Maven-plugin-program
maven-archetype-plugin-site Genererar en webbplats för Maven-insticksprogram
maven-archetype-quickstart Genererar ett Maven-projekt
maven-archetype-simple Genererar ett enkelt Maven-projekt
maven-archetype-site Genererar en Maven-webbplats som visar några av de dokumenttyper som stöds, till exempel APT, XDoc och FML
maven-archetype-site-simple Genererar en enkel Maven-webbplats
maven-archetype-webapp Genererar ett Maven-webbappsprojekt

I nästa övning skapar du en webbapp som du kan distribuera till Azure. Om du till exempel vill skapa en ny Java-webbapp med Maven använder du följande syntax:

mvn archetype:generate \
  -DgroupId=com.microsoft.example \
  -DartifactId=MyWebApp \
  -DarchetypeArtifactId=maven-archetype-webapp \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false

När du kör föregående kommando skapas en projektkatalogstruktur med följande innehåll:

Skärmbild av projektmappen och filhierarkin.

Vad är POM-filer (Project Object Model) ?

En av huvudkomponenterna i ett Maven-projekt är en POM-fil (Project Object Model), som är ett XML-dokument med namnet pom.xml som finns i katalogträdet i ett projekt. POM-filen innehåller egenskaper, beroenden, byggfaser, plugin-program och mål för ett projekt. När du skapar ditt program tar Maven hand om hanteringen av beroendena åt dig.

Maven bygger på ett plugin-ramverk och att lägga till plugin-program i en POM-fil är hur utvecklare definierar mål för sina projekt. När du kör Maven kan du köra ett specifikt mål med hjälp av syntaxen mvn [plugin-name]:[goal-name], och Maven kör alla mål upp till den [goal-name] som du anger.

I följande exempel visas pom.xml filinnehållet som genererades av kommandot mvn archetype:generate med maven-archetype-webapp arketyp i det föregående avsnittet i den här enheten.

<?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>

Lägga till plugin-program i ett Maven-projekt

Om du vill lägga till ett plugin-program i Maven-projektet måste du lägga till den specifika XML-koden för plugin-programmet i pom.xml-filen . Det finns två användbara plugin-program som gör att utvecklare kan köra webbappar lokalt på sina datorer: Eclipse Jetty och Apache Tomcat. Azure App Service-plugin-programmet stöder båda dessa webbservrar. Om du vill lägga till en av dessa servrar i projektet lägger du till den nödvändiga XML-koden för plugin-programmet i taggen <plugins>.

Om du till exempel vill lägga till plugin-programmet Tomcat 11 lägger du till XML som i följande exempel:

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven3-plugin</artifactId>
  <version>1.10.13</version>
  <configuration>
    <container>
      <containerId>tomcat11x</containerId>
    </container>
  </configuration>
</plugin>

Notera

Om du vill hitta ett plugin-program och dess relaterade information kan du söka på den centrala lagringsplatsen på https://search.maven.org/.

När du lägger till XML för Tomcat-plugin-programmet bör <build>-elementet likna följande exempel:

  <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>

När du har lagt till Tomcat-plugin-programmet i projektet kan du använda följande Maven-kommando för att skapa projektet, starta Tomcat-servern och testa webbappen:

mvn package cargo:run

Det här kommandot skapar din app, startar en Tomcat-server på standardporten 8080 och läser in Tomcat-servern. För att läsa in din webapp, navigera till http://localhost:8080/MyWebApp (MyWebApp specificeras i elementet <finalName> i pom.xml).

När du läser in webbappen visas standardsidan index.jsp från projektets mapp src\webapp .

I nästa övning skapar du en Java-webbapp med Maven.