Tworzenie aplikacji internetowej w języku Java
Twoja firma obecnie korzysta z kilku aplikacji internetowych Java na wewnętrznych serwerach. Aby zmniejszyć wysokie koszty związane z utrzymywaniem tych serwerów, firma chce migrować aplikacje internetowe do usługi Azure App Service.
Twój zespół programistyczny ma doświadczenie w tworzeniu aplikacji klasycznych przy użyciu narzędzia Maven, a ty już używasz narzędzia Maven do automatyzowania procesu kompilacji dla projektów Java. Rozumiesz, że narzędzie Maven używa wtyczek dla projektów w celu dodania dodatkowych funkcji i chcesz użyć archetypu do utworzenia aplikacji internetowej, którą można wdrożyć w usłudze Azure App Service.
W tej lekcji dowiesz się, jak narzędzia Maven i archetypy mogą pomóc w tworzeniu aplikacji internetowych Java. Dowiesz się, jak utworzyć małą aplikację internetową Java i uruchomić ją lokalnie. Następnie dowiesz się, co należy dodać do pliku Project Object Model (POM) w celu włączenia lokalnego testowania dla nowej aplikacji.
Używanie narzędzia Maven do automatyzowania tworzenia aplikacji internetowych w języku Java
Narzędzie Maven jest najczęściej używanym narzędziem do kompilowania języka Java i służy do tworzenia dowolnego projektu opartego na języku Java i zarządzania nim. Pomaga to usprawnić procesy tworzenia projektów Java przez deweloperów przy użyciu standardowego sposobu kompilowania projektów, jasnej definicji tego, co składa się z projektu, łatwego sposobu publikowania informacji o projekcie i sposobu udostępniania jednostek JAR w kilku projektach. Cele Maven to:
- Ułatwij proces kompilacji.
- Przezroczysta migracja do nowych funkcji.
- Zapewnij jednolity system kompilacji.
- Implementowanie wytycznych dotyczących najlepszych rozwiązań w zakresie programowania.
Co to są archetypy?
Twórcy Mavena potrzebowali sposobu zapewnienia spójnych najlepszych praktyk, które można naśladować, gdy deweloperzy strukturują nowe projekty, oraz odkryli, że istnieje kilka podobieństw między różnymi rodzajami projektów. Twórcy wykorzystali te informacje do zdefiniowania tych typów projektów jako szablonów o nazwie archetypów, których narzędzie Maven używa do szybkiego tworzenia szkieletu dla nowych projektów. Oto kilka przykładów typowych archetypów:
Archetyp | Opis |
---|---|
maven-archetype-archetype |
Generuje projekt archetypu |
maven-archetype-mojo |
Generuje przykładową wtyczkę maven |
maven-archetype-plugin |
Generuje wtyczkę Maven |
maven-archetype-plugin-site |
Generuje witrynę wtyczki Maven |
maven-archetype-quickstart |
Generuje projekt Maven |
maven-archetype-simple |
Generuje prosty projekt Maven |
maven-archetype-site |
Generuje witrynę Maven, która pokazuje niektóre obsługiwane typy dokumentów, takie jak APT, XDoc i FML. |
maven-archetype-site-simple |
Generuje prostą witrynę Maven |
maven-archetype-webapp |
Generuje projekt aplikacji netowej Maven |
W następnym ćwiczeniu utworzysz aplikację internetową, którą można wdrożyć na platformie Azure. Aby na przykład utworzyć nową aplikację internetową Java przy użyciu narzędzia Maven, należy użyć następującej składni:
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
Uruchomienie poprzedniego polecenia powoduje utworzenie struktury katalogu projektu o następującej zawartości:
Co to są pliki modelu obiektów projektu (POM)?
Jednym z podstawowych składników projektu Maven jest plik Project Object Model (POM), który jest dokumentem XML o nazwie pom.xml
, który znajduje się w drzewie katalogów projektu. Plik POM zawiera właściwości, zależności, fazy kompilacji, wtyczki i cele projektu. Podczas kompilowania aplikacji narzędzie Maven zajmie się zarządzaniem zależnościami.
Narzędzie Maven jest oparte na strukturze wtyczek, a dodawanie wtyczek do pliku POM to sposób, w jaki deweloperzy definiują cele dla swoich projektów. Po uruchomieniu narzędzia Maven można wykonać określony cel przy użyciu składni mvn [plugin-name]:[goal-name]
, a narzędzie Maven uruchomi wszystkie cele do określonego [goal-name]
.
Poniższy przykład ilustruje zawartość pliku pom.xml wygenerowaną przez polecenie mvn archetype:generate
z archetypem maven-archetype-webapp
w poprzedniej sekcji tej lekcji.
<?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>
Jak dodać wtyczki do projektu Maven
Aby dodać wtyczkę do projektu Maven, należy dodać określony kod XML dla tej wtyczki do pliku pom.xml. Istnieją dwie przydatne wtyczki, które umożliwiają deweloperom lokalne uruchamianie aplikacji internetowych na swoich maszynach: Eclipse Jetty i Apache Tomcat. Wtyczka usługi Azure App Service obsługuje oba te serwery internetowe. Aby dodać jeden z tych serwerów do projektu, należy dodać wymagany kod XML dla wtyczki do tagu <plugins>
.
Aby na przykład dodać wtyczkę Tomcat 11, należy dodać kod XML podobny do następującego przykładu:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
Notatka
Aby znaleźć wtyczkę i powiązane z nią informacje, możesz wyszukać repozytorium centralne pod adresem https://search.maven.org/.
Po dodaniu kodu XML dla wtyczki Tomcat element <build>
powinien przypominać następujący przykład:
<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>
Po dodaniu wtyczki Tomcat do projektu możesz użyć następującego polecenia narzędzia Maven, aby skompilować projekt, uruchomić serwer Tomcat i przetestować aplikację internetową:
mvn package cargo:run
To polecenie kompiluje aplikację, uruchamia serwer Tomcat na domyślnym porcie 8080 i ładuje serwer Tomcat. Aby załadować aplikację internetową, przejdź do http://localhost:8080/MyWebApp
(aplikacja MyWebApp jest określona w elemecie <finalName>
w pom.xml).
Podczas ładowania aplikacji internetowej zostanie wyświetlona domyślna strona index.jsp z folderu src\webapp projektu.
W następnym ćwiczeniu utworzysz aplikację internetową Java przy użyciu narzędzia Maven.