使用命令行创建简单的Maven Web应用程序

x33g5p2x  于2022-10-15 转载在 Maven  
字(7.4k)|赞(0)|评价(0)|浏览(323)

在本教程中,我们使用Maven Archetype插件创建了一个简单的web应用程序。我们将在名为jetty或tomcat的Servlet容器中运行此web应用程序。
请注意,我们正在使用Maven从命令行创建Maven web应用程序。

先决条件

-确保已安装Java 8+。
-确保已安装Maven并配置了环境路径

1.创建Maven Web项目

要创建web应用程序,请使用以下maven命令(我们的项目名称:simple-webapp):

mvn archetype:generate -DgroupId=com.companyname.simpleweb -DartifactId=simple-webapp -Dpackage=com.companyname.projectname -Dversion=1.0-SNAPSHOT

注意,整个命令应该是一行。构建成功后,我们将在命令行控制台中看到以下输出。

[INFO] Parameter: package, Value: com.javadevelopersguide
[INFO] Parameter: groupId, Value: com.javadevelopersguide
[INFO] Parameter: artifactId, Value: maven-webapp
[INFO] Parameter: packageName, Value: com.javadevelopersguide
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: C:\Ramesh_Study\maven\guides\maven-webapp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25.499 s
[INFO] Finished at: 2018-06-20T12:35:13+05:30
[INFO] ------------------------------------------------------------------------

2.Maven标准结构

继续并打开pom.xml文件。maven-webapp项目的初始POM:

<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.javadevelopersguide</groupId>
  <artifactId>maven-webapp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>maven-webapp 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>maven-webapp</finalName>
  </build>
</project>

现在,让我们将maven项目配置为使用maven-compiler-plugin来使用Java8编译源代码。
打开pom.xml文件并添加以下maven-compiler-plugin:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
     <source>1.8</source>
     <target>1.8</target>
    </configuration>
   </plugin>

以下是完整的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.javadevelopersguide</groupId>
 <artifactId>maven-webapp</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>maven-webapp 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>maven-webapp</finalName>
  <plugins>
   <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
     <source>1.8</source>
     <target>1.8</target>
    </configuration>
   </plugin>
  </plugins>
 </build>
</project>

注意,packaging元素包含值war。这种打包类型将Maven配置为在WAR文件中生成web应用程序存档。
它是一个web应用程序,应该创建web。xml(部署描述符)
因此,打开src/main/webapp/WEB-INF/WEB。xml文件以查看其内容:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

3.在Eclipse IDE中导入Maven Web应用程序

将其导入Eclipse IDE:
文件->导入…->Maven->现有Maven项目到工作区。

4.添加J2EE依赖项

要编写servlet,我们需要将ServletAPI作为依赖项添加到项目的POM中。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

还值得指出的是,我们使用了提供的scope作为此依赖项。这告诉Maven JAR是由容器“提供”的,因此不应包含在WAR中
如果您有兴趣为这个简单的web应用程序编写自定义JSP标记,则需要添加对JSP2.0API的依赖关系。使用此示例中显示的配置:

<!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

5.添加简单Servlet

让我们向这个应用程序添加一个简单的servlet,并对pom.xmlweb.xml进行一些更改以支持此更改
让我们创建一个名为“com.javadevelopersguide.mavenwebapp.web”的包,在此包下创建SimpleServlet类。

package com.javadevelopersguide.mavenwebapp.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SimpleServlet extends HttpServlet {
 
 private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         PrintWriter out = response.getWriter();
         out.println(" SimpleServlet Executed");
         out.flush();
         out.close();
    }
}

我们的SimpleServlet类就是这样的:一个servlet,它将简单的消息打印到响应的Writer

6.在部署描述符(web.xml)中Map简单Servlet

打开src/main/webapp/WEB-INF/web.xml文件并添加以下代码以Mapservlet:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>simple</servlet-name>
        <servlet-class>
           com.javadevelopersguide.mavenwebapp.web.SimpleServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>simple</servlet-name>
        <url-pattern>/simple</url-pattern>
    </servlet-mapping>
</web-app>

就是这样。现在,您可以从eclipse或外部tomcat或嵌入式服务器(如jetty)运行web应用程序。

7.运行Web应用程序

1.如果您已经将maven-webapp应用程序导入到eclipse中,那么只需在tomcat服务器中作为服务器运行即可。
1.您还可以配置Jetty插件。在这个例子中,让我们配置Jetty插件并运行web应用程序。
配置Jetty插件

<build>
 <finalName>maven-webapp</finalName>
 <plugins>
     <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
     </plugin>
     <plugin>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>maven-jetty-plugin</artifactId>
     </plugin>
 </plugins>
</build>

转到项目目录并运行以下命令以在Jetty服务器中运行此Maven项目:

mvn jetty:run
[INFO] Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
[INFO] Context path = /maven-webapp
[INFO] Tmp directory =  determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
[INFO] web.xml file = C:\Ramesh_Study\maven\guides\maven-webapp\src\main\webapp\WEB-INF\web.xml
[INFO] Webapp directory = C:\Ramesh_Study\maven\guides\maven-webapp\src\main\webapp
[INFO] Starting jetty 6.1.26 ...
[INFO] jetty-6.1.26
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
[INFO] Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server

8.演示

一旦Jetty服务器启动,只需在浏览器中点击以下URL:

http://localhost:8080/maven-webapp/simple

9.结论

在本教程中,我们学习了如何创建一个简单的基于maven的web应用程序,并在名为jetty的Servlet容器中运行了该web应用程序。
这个简单的maven web项目的源代码可以在Github上找到。
Github存储库:Simple Maven Web Application

相关文章