创建第一个Maven项目

-----------------------siwuxie095

  

  

  

  

  

  

  

  

  

创建第一个 Maven 项目

  

  

1、打开Eclipse,File->New->Maven Project

  

  

  

建议:勾选上Create a simple project(skip archetype selection),

跳过原型选项跳过骨架选项

  

  

  

  

  

2、输入Maven 项目相关信息

  

  

  

其中:

  

1Group Id:当前 Maven 项目隶属的实际项目

  

  

2Artifact Id当前 Maven 项目(也称 模块

  

  

3Version:当前 Maven 项目的版本号

  

1SNAPSHOT快照版本,即 测试版本

  

2RELEASE发布版本,即 正式版本

  

  

4Packaging:当前 Maven 项目的打包方式,有三种:jar、

war、pom,打包方式决定了当前Maven 项目的性质

  

1jarJava 项目

  

2warWeb 项目

  

3pom父项目(用于 Maven 项目的继承)

  

  

5Name:当前 Maven 项目的显示名,常用于 Maven 生成的文档

  

  

6Description:当前 Maven 项目的描述,常用于 Maven 生成的文档

  

  

  

  

  

3、这里创建的是Web 项目,如下:

  

  

  

其中有两个错误:

  

1)没有部署描述文件web.xml,解决方法:

  

选择项目名,右键->Java EE Tools->Generate Deployment

Descriptor Stub,将自动在webapp 目录下生成 WEB-INF

目录 和 web.xml 文件

  

  

  

  

2)Maven 默认的JDK 版本是 1.5,需要将其修改为本机的 JDK 版本

  

法一:在pom.xml 的 project 标签中添加如下内容:

  

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.8</source>

<target>1.8</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

</plugins>

</build>

  

  

法二:在settings.xml 的 profiles 标签中添加如下内容(建议):

  

<profile>

<id>jdk-1.8</id>

<activation>

<activeByDefault>true</activeByDefault>

<jdk>1.8</jdk>

</activation>

<properties>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

</properties>

</profile>

  

  

添加完成后,还要做操作:选择项目名,右键->Maven->Update Project…

  

  

  

  

  

  

4、在src/main/java 目录中创建 Servlet 时,编译报错

  

  

  

原因:缺少servlet-api-xxx.jar,解决方法:在 pom.xml

project 标签中添加依赖,即添加该 jar 包的坐标

  

<dependencies>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<!--

注意:

 

最终要将该项目运行在 Tomcat 中,而 Tomcat

已经包含了 servlet-api jar

 

这里添加 servlet-api 的依赖仅仅是为了保证编

译通过,不报错而已

 

当把项目运行在 Tomcat 中时,为避免 jar 包冲突,

需要将这里 servlet-api 的作用范围 scope 设置为

provided,即只在编译和测试时有效,而在运行时

无效

 

同理,jsp-api 也是如此

-->

<scope>provided</scope>

</dependency>

</dependencies>

  

  

  

保存后,项目目录将出现Maven Dependencies,该 jar 包

索引到本地仓库,且此时编译正常

  

  

  

注:创建的Servlet 将在 web.xml 中自动注册,无需手动注册。

当然,可以在web.xml 中对该Servlet 的访问路径进行修改

  

  

  

  

  

5、在添加依赖时,如果不知道该依赖的相关信息,就需要查找

依赖,可以使用仓库搜索服务来根据关键字得到Maven 坐标:

  

1http://mvnrepository.com/

  

2http://search.maven.org/

  

3http://www.mvnbrowser.com

  

4https://repository.sonatype.org/#welcome

  

  

  

  

  

6、不再使用Maven 默认的 tomcat-maven-plugin 插件,改用

tomcat6-maven-plugintomcat7-maven-plugin插件

  

「截止目前(2017/9/22)最新的插件」

  

法一:在pom.xml 的 project 标签中添加如下内容:

  

<build>

<plugins>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat6-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

</plugins>

</build>

  

  

法二:在settings.xml 的 pluginGroups 标签中添加如下内容(建议):

  

<pluginGroup>org.apache.tomcat.maven</pluginGroup>

  

  

  

插件官网:

  

http://tomcat.apache.org/maven-plugin.html

  

  

参考链接:

  

参考链接1参考链接2参考链接3参考链接4

  

  

  

  

  

7、项目文件一览:

  

LoginServlet.java:

  

package com.siwuxie095.servlet;

  

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

  

public class LoginServlet extends HttpServlet {

private static finallong serialVersionUID = 1L;

  

public LoginServlet() {

}

  

protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

response.getWriter().write("Hello Maven!");

}

  

protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

  

}

  

  

  

web.xml:

  

<?xmlversion="1.0"encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5">

<display-name>maven-test</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

  

<servlet>

<description></description>

<display-name>LoginServlet</display-name>

<servlet-name>LoginServlet</servlet-name>

<servlet-class>com.siwuxie095.servlet.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>LoginServlet</servlet-name>

<url-pattern>/LoginServlet</url-pattern>

</servlet-mapping>

</web-app>

  

  

  

pom.xml:

  

<projectxmlns="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>

<!-- 当前 Maven 项目的坐标信息 -->

<groupId>com.siwuxie095.maven</groupId>

<artifactId>maven-test</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

 

 

<dependencies>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<!--

注意:

 

最终要将该项目运行在 Tomcat 中,而 Tomcat

已经包含了 servlet-api jar

 

这里添加 servlet-api 的依赖仅仅是为了保证编

译通过,不报错而已

 

当把项目运行在 Tomcat 中时,为避免 jar 包冲突,

需要将这里 servlet-api 的作用范围 scope 设置为

provided,即只在编译和测试时有效,而在运行时

无效

 

同理,jsp-api 也是如此

 

几乎所有 Maven Web 项目都要添加 servlet-api

jsp-api 依赖,因为这里没有编写 JSP 页面,所

以没有添加 jsp-api 依赖

-->

<scope>provided</scope>

</dependency>

</dependencies>

  

</project>

  

  

  

  

  

8、运行该 Web 项目

  

  

  

法一:选择项目名,右键->Run As->Run on Server

  

  

法二:选择项目名,右键->Run As->Maven build…,

在 Goals 处输入 tomcat7:run(或 tomcat6:run

  

「如果是在CMD 窗口中,则需要输入 mvn tomcat7:run」

  

  

  

注意:

  

(1)Maven build…Maven build 的区别:

  

前者是手动输入命令进行操作,后者是保存前者的命令记录

  

  

2Run on Servertomcat7:run 的区别:

  

前者是将该Web 项目运行在本机安装的 Tomcat 9,而后者

是将该Web 项目运行在 Maven 的 tomcat7-maven-plugin

插件

  

  

  

  

  

9、调试该Web 项目

  

  

  

法一:选择项目名,右键->Debug As->Debug on Server

  

  

法二:选择项目名,右键->Debug As->Maven build…,

在 Goals 处输入 tomcat7:run(或 tomcat6:run

  

值得注意的是:调试时需要手动选择该项目

  

  

  

  

  

  

10、访问路径

  

http://localhost:8080/maven-test/LoginServlet

  

  

  

  

  

  

  

  

  

  

  

【made by siwuxie095】