MAVEN的安裝與更換中央倉庫的源
下載
訪問 http://maven.apache.org/download.cgi
選擇 apache-maven-3.5.0-bin.zip
下載
安裝
將下載的下來的文件解壓到 D:\apache-maven-3.5.0
加入環境變量
新建 M2_HOME
,填寫 D:\apache-maven-3.5.0
然后修改 Path
,加入 ;%M2_HOME%\bin
修改中央倉庫源
將 D:\apache-maven-3.5.0\conf\settings.xml
文件放到 %USER_HOME%\.m2
文件夾中,如果不存在改文件夾就創建一個
修改其中的 <mirrors>
元素,加入
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置 Eclipse 的 maven
選擇 Window - Preferences - Maven - Installations
,添加剛才安裝好的 maven,并勾選
然后確保配置文件指向我們剛剛創建的 settings.xml 文件
配置 Eclipse 的 JDK 環境
選擇 Window - Preferences - Java - Installed JRES
,然后勾選 JDK,沒有就創建一個
打開 Eclipse 的 Problems 視圖
在 Eclipse 中創建 Maven 項目時,會遇到一些錯誤,從 Problems 視圖可以看到具體的錯誤信息,所以就需要打開它
選擇 Window - Show View - Other - Problems
maven 項目的創建
創建 maven 項目時會遇到的問題
按照老套路來創建 maven 項目:File - New - Maven Project
,然后選擇 maven-archetype-webapp
創建。在 Eclipse 中會出問題,會出現莫名其妙的紅叉,而且還不好解決。
所以,我換了一種方式:創建一個普通的 maven 項目,然后再轉換成 web 項目。
創建 Maven 項目的步驟
選擇 File - New - Maven Project
,勾上 Create a simple project(skip archetype selection)
點擊 next,填寫 groupId 和 artifactId。Packaging 不要改,依然是 jar
,后面再改
右鍵項目 - Properties - Project Facets
,點擊 Convert to faced form...
勾上這三個選項,注意一下他們的 version
點擊 Further configuration available...
填寫信息和勾上選項
接在再修改編譯文件的目標路徑,改成如下的就行
然后修改部署設置,測試文件不需要部署,remove 掉即可
修改 pom.xml
修改 packaging
的方式為 war
;加入 maven-compiler-plugin
插件,并指定 source
和 target
的版本;指定編碼為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.okada</groupId>
<artifactId>mavendemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
保存之后,在 Problems 視圖會提示有錯誤
按照提示,按下 ALT+F5
,刷新一下項目即可消除錯誤
添加依賴
添加幾個依賴:
- junit
- servlet
- jsp
- jstl
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
添加 tomcat7 插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
測試項目是否搭建成功
新建一個 Servlet
package com.okada.mavendemo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
然后右鍵項目,選擇 run as - Maven build
在 Goals
中填寫 tomcat7:run
就可以看到控制臺的信息,然后訪問 http://localhost:8080/mavendemo/HelloWorldServlet
,可以看到正常輸出就說明項目搭建成功了
使用 IDEA 創建 maven 構建的 web 項目
上面是使用 Eclipse 來創建項目,如果用 IDEA,步驟不同
設置 Maven
先進入 Default settins
,找到 maven
選項,然后選擇 maven 的路徑和設置 settings.xml
和 倉庫的位置
創建項目
如圖所示,選擇 Maven 標簽,選擇 JDK,然后選擇 archetype 為 web-app
填寫 groupId 和 artifactId
選擇下一步,確認 maven 的版本
選擇下一步,確認項目存放的路徑
然后點擊ok,現在項目就創建好了,目前的項目文件夾結構如圖
還不是一個標準的 maven 的文件夾結構,需要補上缺失的文件夾
補全文件夾
一個標準的 maven 的文件夾結構是這樣的
src
├─main
│ ├─java
│ ├─resources
│ └─webapp
└─test
├─java
└─resources
選擇 File - Project Settings
,選擇 Modules
標簽,如圖所示創建 src/main/java
文件夾
并將它設置為 sources
同樣的操作,創建 src/test/java
,并設置為 Test
,創建 src/test/resources
,并將它設置為 Test resources
確認 Facets 的信息
如圖確認 web.xml 和 web resources 的路徑是否正確
設置 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.owen</groupId>
<artifactId>demo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.artifactId}</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
修改 web.xml
按照 servlet 3.0 的規范來修改 web.xml
<?xml version="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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Archetype Created Web Application</display-name>
</web-app>
測試是否創建成功
新建一個 servlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/hellMaven")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = dateFormat.format(new Date());
req.setAttribute("currentTime",currentTime);
req.getRequestDispatcher("/WEB-INF/view/hello.jsp").forward(req,resp);
}
}
新建一個 jsp 文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Hello</h1>
<h2>當前時間:${currentTime}</h2>
</body>
</html>
運行項目
點擊右上角
然后選擇 +
創建一個配置
為配置去個名字,同時填寫信息,點擊ok
右上角就會出現一個剛剛配置好的配置項,點擊 run 就能運行項目了