Een Java-web-app maken

Voltooid

Uw bedrijf voert momenteel diverse Java-web-apps uit op interne servers. Om de hoge kosten voor het onderhouden van deze servers te verlagen, wil uw bedrijf uw web-apps migreren naar Azure-app Service.

Uw ontwikkelingsteam heeft al enige ervaring met het gebruik van Maven om desktop-apps te maken, en u gebruikt Maven al om het bouwproces voor uw Java-projecten te automatiseren. U begrijpt dat voor Maven invoegtoepassingen worden gebruikt om extra functionaliteit aan projecten toe te voegen en u wilt een archetype gebruiken om een web-app te maken die u in Azure App Service kunt implementeren.

In deze les leert u opnieuw hoe u Maven en archetypen kunt gebruiken om Java-web-apps te maken. U leert hoe u een kleine Java-web-app maakt en deze lokaal uitvoert. Vervolgens leert u wat u kunt toevoegen aan het POM-bestand (Project Object Model) om lokaal testen voor uw nieuwe app in te schakelen.

Maven gebruiken om het bouwen van Java-web-apps te automatiseren

Maven is het meest gebruikte Java-buildhulpprogramma en u kunt dit gebruiken voor het bouwen en beheren van elk Op Java gebaseerd project. Het helpt bij het stroomlijnen van de processen voor de manier waarop ontwikkelaars Java-projecten bouwen met een standaardmanier om de projecten te bouwen, een duidelijke definitie van het project, een eenvoudige manier om projectgegevens te publiceren en een manier om JAR's over verschillende projecten te delen. Het doel van Maven is:

  • Maak het bouwproces eenvoudiger.
  • Transparant migreren naar nieuwe functies.
  • Een uniform buildsysteem bieden.
  • Richtlijnen implementeren over best practice in ontwikkeling.

Wat zijn archetypen?

Maven's makers hebben een manier nodig om een consistente best practice te bieden die moet worden gevolgd wanneer ontwikkelaars nieuwe projecten structuren en ontdekten dat er verschillende overeenkomsten zijn tussen verschillende soorten projecten. De makers hebben deze informatie gebruikt om deze projecttypen te definiëren als sjablonen die archetypen worden genoemd, die Maven gebruikt om snel de scaffolding voor nieuwe projecten te maken. Hier ziet u enkele voorbeelden van veelgebruikte archetypen:

Archetype Beschrijving
maven-archetype-archetype Hiermee wordt een archetypeproject gegenereerd
maven-archetype-mojo Hiermee wordt een voorbeeld van een Maven-invoegtoepassing gegenereerd
maven-archetype-plugin Hiermee wordt een Maven-invoegtoepassing gegenereerd
maven-archetype-plugin-site Hiermee wordt een Maven-invoegtoepassingssite gegenereerd
maven-archetype-quickstart Hiermee wordt een Maven-project gegenereerd
maven-archetype-simple Hiermee een eenvoudig Maven-project gegenereerd
maven-archetype-site Hiermee wordt een Maven-site gegenereerd waarin een aantal ondersteunde documenttypen worden weergegeven, zoals APT, XDoc en FML
maven-archetype-site-simple Hiermee wordt een eenvoudige Maven-site gegenereerd
maven-archetype-webapp Hiermee wordt een Maven-web-app-project gegenereerd

In de volgende oefening maakt u een web-app die u in Azure kunt implementeren. Als u bijvoorbeeld een nieuwe Java-web-app wilt maken met behulp van Maven, gebruikt u de volgende syntaxis:

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

Als u de voorgaande opdracht uitvoert, wordt een projectmapstructuur gemaakt met de volgende inhoud:

Schermopname van de projectmap en bestandshiërarchie.

Wat zijn POM-bestanden (Project Object Model)?

Een van de basisonderdelen van een Maven-project is een POM-bestand (Project Object Model). Dit is een XML-document met de naam pom.xml, dat zich in de mappenstructuur van een project bevindt. Het POM-bestand bevat de eigenschappen, afhankelijkheden, bouwfasen, invoegtoepassingen en doelen voor een project. Wanneer u uw toepassing bouwt, worden de afhankelijkheden voor u beheerd door Maven.

Maven wordt gebouwd op basis van een invoegtoepassingsframework. Door invoegtoepassingen aan een POM-bestand toe te voegen, kunnen ontwikkelaars doelen voor hun projecten definiëren. Wanneer u Maven uitvoert, kunt u een specifiek doel uitvoeren met behulp van de syntaxis mvn [plugin-name]:[goal-name]; Maven voert alle doelen uit tot aan de [goal-name] die u opgeeft.

In het volgende voorbeeld ziet u de pom.xml bestandsinhoud die is gegenereerd door de mvn archetype:generate opdracht met het maven-archetype-webapp archetype in de vorige sectie van deze eenheid.

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

Invoegtoepassingen toevoegen aan een Maven-project

Als u een invoegtoepassing wilt toevoegen aan uw Maven-project, moet u de specifieke XML voor die invoegtoepassing toevoegen aan het pom.xml-bestand . Er zijn twee handige invoegtoepassingen waarmee ontwikkelaars web-apps lokaal op hun computers kunnen uitvoeren: Eclipse Jetty en Apache Tomcat. De Azure-app Service-invoegtoepassing ondersteunt beide webservers. Als u een van deze servers aan uw project wilt toevoegen, voegt u de vereiste XML voor de invoegtoepassing toe aan de <plugins> tag.

Als u bijvoorbeeld de invoegtoepassing Tomcat 11 wilt toevoegen, voegt u XML toe zoals in het volgende voorbeeld:

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

Notitie

Als u een invoegtoepassing en de bijbehorende informatie wilt vinden, kunt u zoeken in de centrale opslagplaats op https://search.maven.org/.

Zodra u de XML voor de Tomcat-invoegtoepassing hebt toegevoegd, moet het <build> element eruitzien als in het volgende voorbeeld:

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

Nadat u de Tomcat-invoegtoepassing aan uw project hebt toegevoegd, kunt u de volgende Maven-opdracht gebruiken om het project te bouwen, de Tomcat-server te starten en uw web-app te testen:

mvn package cargo:run

Met deze opdracht bouwt u uw app, start u een Tomcat-server op de standaardpoort van 8080 en laadt u de Tomcat-server. Als u uw web-app wilt laden, gaat u naar http://localhost:8080/MyWebApp (MyWebApp is opgegeven in het <finalName> element in pom.xml).

Wanneer u de web-app laadt, wordt de standaardpagina index.jsp weergegeven in de map src\webapp van uw project.

In de volgende oefening maakt u een Java-web-app met behulp van Maven.