runoops.com

Maven Web 应用

本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署以及运行一个 web 应用。

创建 Web 应用

我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。

打开命令控制台,进入到 E:\MVN 文件夹,然后执行以下的 mvn 命令:

E:\MVN>mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp  -DinteractiveMode=false

执行完后 Maven 将开始处理,并且创建完整的于Java Web 项目的目录结构。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------

...
...
en-archetype-webapp-1.0.jar (3.9 kB at 12 kB/s)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: E:\MVN
[INFO] Parameter: package, Value: com.companyname.automobile
[INFO] Parameter: groupId, Value: com.companyname.automobile
[INFO] Parameter: artifactId, Value: trucks
[INFO] Parameter: packageName, Value: com.companyname.automobile
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: E:\MVN\trucks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  28.804 s
[INFO] Finished at: 2022-07-16T08:13:53+08:00
[INFO] ------------------------------------------------------------------------

执行完后,我们可以在 E:/MVN 文件夹下看到 trucks 项目,查看项目的目录结构:

Maven 目录结构是标准的,各个目录作用如下表所示:

文件夹结构描述
trucks包含 src 文件夹和 pom.xml 文件。
src/main/webapp包含 index.jsp 文件和 WEB-INF 文件夹.
src/main/webapp/WEB-INF包含 web.xml 文件
src/main/resources包含图片、properties资源文件。

pom.xml 文件代码如下:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.companyname.automobile</groupId>
  <artifactId>trucks</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>trucks Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>trucks</finalName>
  </build>
</project>

接下来我们打开 E:\ > MVN > trucks > src > main > webapp > 文件夹,可以看到一个已经创建好的 index.jsp 文件,代码如下:

<html>
   <body>
      <h2>Hello World!</h2>
   </body>
</html>

构建 Web 应用

打开命令控制台,进入 E:\MVN\trucks 目录,然后执行下面的以下 mvn 命令:

E:\MVN\trucks>mvn clean package

Maven 将开始构建项目:

[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.companyname.automobile:trucks >------------------
[INFO] Building trucks Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.2/maven-war-plugin-2.2.pom
...
...
WARNING: All illegal access operations will be denied in a future release
[INFO] Packaging webapp
[INFO] Assembling webapp [trucks] in [E:\MVN\trucks\target\trucks]
[INFO] Processing war project
[INFO] Copying webapp resources [E:\MVN\trucks\src\main\webapp]
[INFO] Webapp assembled in [41 msecs]
[INFO] Building war: E:\MVN\trucks\target\trucks.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  55.675 s
[INFO] Finished at: 2022-07-16T08:22:00+08:00
[INFO] ------------------------------------------------------------------------

部署 Web 应用

打开 E:\ < MVN < trucks < target < 文件夹,找到 trucks.war 文件,并复制到你的 web 服务器的 web 应用目录,然后重启 web 服务器。

测试 Web 应用

访问以下 URL 运行 web 应用:

http://:/trucks/index.jsp

验证结果: