創建Maven構建的web項目

MAVEN的安裝與更換中央倉庫的源

下載

訪問 http://maven.apache.org/download.cgi 選擇 apache-maven-3.5.0-bin.zip 下載

maven.png

安裝

將下載的下來的文件解壓到 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,并勾選

maven.png

然后確保配置文件指向我們剛剛創建的 settings.xml 文件

maven_setting.png

配置 Eclipse 的 JDK 環境

選擇 Window - Preferences - Java - Installed JRES,然后勾選 JDK,沒有就創建一個

JDK.png

打開 Eclipse 的 Problems 視圖

在 Eclipse 中創建 Maven 項目時,會遇到一些錯誤,從 Problems 視圖可以看到具體的錯誤信息,所以就需要打開它

選擇 Window - Show View - Other - Problems

Problems.png

maven 項目的創建

創建 maven 項目時會遇到的問題

按照老套路來創建 maven 項目:File - New - Maven Project,然后選擇 maven-archetype-webapp 創建。在 Eclipse 中會出問題,會出現莫名其妙的紅叉,而且還不好解決。

archetype-webapp.png

所以,我換了一種方式:創建一個普通的 maven 項目,然后再轉換成 web 項目。

創建 Maven 項目的步驟

選擇 File - New - Maven Project,勾上 Create a simple project(skip archetype selection)

NewMavenProject.png

點擊 next,填寫 groupId 和 artifactId。Packaging 不要改,依然是 jar,后面再改

groupId_artifactId.png

右鍵項目 - Properties - Project Facets,點擊 Convert to faced form...

Convert.png

勾上這三個選項,注意一下他們的 version

ProjectFacets.png

點擊 Further configuration available...

FurtherCfg.png

填寫信息和勾上選項

webModule.png

接在再修改編譯文件的目標路徑,改成如下的就行

target.png

然后修改部署設置,測試文件不需要部署,remove 掉即可

deploy.png

修改 pom.xml

修改 packaging 的方式為 war;加入 maven-compiler-plugin 插件,并指定 sourcetarget 的版本;指定編碼為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 視圖會提示有錯誤

problems.png

按照提示,按下 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

Paste_Image.png

就可以看到控制臺的信息,然后訪問 http://localhost:8080/mavendemo/HelloWorldServlet,可以看到正常輸出就說明項目搭建成功了

使用 IDEA 創建 maven 構建的 web 項目

上面是使用 Eclipse 來創建項目,如果用 IDEA,步驟不同

設置 Maven

先進入 Default settins,找到 maven 選項,然后選擇 maven 的路徑和設置 settings.xml 和 倉庫的位置

IDEA_Maven.png

創建項目

如圖所示,選擇 Maven 標簽,選擇 JDK,然后選擇 archetype 為 web-app

New_Project.png

填寫 groupId 和 artifactId

groupIdArtifactId.png

選擇下一步,確認 maven 的版本

maven.png

選擇下一步,確認項目存放的路徑

dir.png

然后點擊ok,現在項目就創建好了,目前的項目文件夾結構如圖

project_structure.png

還不是一個標準的 maven 的文件夾結構,需要補上缺失的文件夾

補全文件夾

一個標準的 maven 的文件夾結構是這樣的

src
 ├─main
 │  ├─java
 │  ├─resources
 │  └─webapp
 └─test
     ├─java
     └─resources

選擇 File - Project Settings,選擇 Modules 標簽,如圖所示創建 src/main/java 文件夾

new_folder.png

并將它設置為 sources

java_sources.png

同樣的操作,創建 src/test/java,并設置為 Test,創建 src/test/resources,并將它設置為 Test resources

確認 Facets 的信息

如圖確認 web.xml 和 web resources 的路徑是否正確

Facets.png

設置 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>

運行項目

點擊右上角

edit_cfg.png

然后選擇 + 創建一個配置

maven_cfg.png

為配置去個名字,同時填寫信息,點擊ok

commond.png

右上角就會出現一個剛剛配置好的配置項,點擊 run 就能運行項目了

run.png

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,953評論 6 342
  • 是日,天朗氣清,惠風和暢。 天空隨意一乍響,大地隨意一顫動。老夫掐指一算,紫薇星動。海浪裹日。日子過的生生無趣。不...
    少年落語閱讀 170評論 0 0
  • hello, 我是大頭貓! 大頭貓
    lyz_0218閱讀 263評論 0 0
  • 上學的時候坐在我前面的是個男生,有天他神神秘秘的對我說,你知道嗎,我能把血管掐出聲音來。 我當然不信。 他伸手過來...
    芳寶落落閱讀 420評論 0 0