日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven项目整合讲义(Eclipse版)

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven项目整合讲义(Eclipse版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1.? Maven概述

1.1.?? Maven是什么

Maven是一個由Apache基金會維護的項目構建工具。

?

1.2.?? 項目構建是什么

我們將項目的代碼從源代碼具體程序文件的過程稱為代碼構建。

行為包括:編譯、測試、運行、打包、部署的過程

?

1.3.?? Eclipse項目構建

Eclipse構建項目的過程圖示:

?

?

?

?

?

構建過程如下:

1)創建一個Web項目

2)在項目中編寫好源代碼和配置文件

3)對源代碼編譯生成class文件

4)通過Junit對代碼單元測試

5)將項目通過Eclipse工具放在Tomcat運行

6)將項目導出war,放在Tomcat運行

?

1.4.?? Maven構建項目

通過Maven構建工具可以一條命令完成上面所有的操作:

?

?

?

?

  • *clean,清除命令,作用清除已經編譯的class文件和war文件
  • *compile,編譯命令,作用是將java文件編譯成class文件
  • *package,打包命令,作用將class文件打成war包
  • test,測試命令,作用執行Junit工具(可以忽略)
  • deploy,部署命令,將war包放在指定的tomcat(可以忽略)
  • *運行Tomcat,通過命令tomcat7:run (要加入Maven工具的Tomcat7插件)
  • *install,安裝命令,一條命令包括了,clean complile package test
  • ?

    1.5.?? 使用Maven的好處

  • 使用命令,一鍵快速編譯部署
  • 對項目的構建更加精細化,適合大型項目的構建
  • Maven支持直接通過配置文件(POM)的配置下載依賴的包
  • 各大開源社區強制使用Maven導包,意味著如果不學它,有很多的開源項目不好入門。
  • ?

    2.? Maven的安裝

    2.1.?? Maven說明

    下載路徑:http://maven.apache.org/download.cgi

    目錄說說明:

    ?

    ?

    ?

    2.2.?? 環境配置

    2.2.1.? 第一步:確定JAVA_HOME配置

    前提:如果要在CMD命令行運行Maven,必須要配置JAVA_HOME環境變量

    通過set命令

    ?

    ?

    ?

    ?

    如果沒有配置JAVA_HOME環境會導致運行獲得Java運行環境,異常如下:

    ?

    ?

    ?

    ?

    ?

    2.2.2.? 第二步:配置MAVEN_HOME環境變量

    ?

    ?

    ?

    ?

    2.2.3.? 第三步:指定Maven執行命令到當前目錄

    配置執行目錄到PATH環境變量,讓命令可以在當前目錄可以執行

    --變量Path變量

    ?

    ?

    --成功增加結果變量:%MAVEN_HOME%\bin

    ?

    2.2.4.? 第四步:測試配置,在CMD下鍵入mvn -h

    如果返回參數提示如下圖,說明配置成功!

    ?

    ?

    ?

    2.2.5.? 第五步:配置Maven國內源

    由于默認Maven使用國外的源,會導致下載jar比較慢。

    配置Maven下conf文件夾的settings.xml文件

    ? <mirrors>

    ??? <!-- mirror

    ???? | Specifies a repository mirror site to use instead of a given repository. The repository that

    ???? | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used

    ???? | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.

    ???? |

    ??? <mirror>

    ????? <id>mirrorId</id>

    ????? <mirrorOf>repositoryId</mirrorOf>

    ????? <name>Human Readable Name for this Mirror.</name>

    ????? <url>http://my.repository.com/repo/path</url>

    ??? </mirror>

    ???? -->

    ????????

    ??? <mirror>

    ????? <id>alimaven</id>

    ????? <name>aliyun maven</name>

    ????? <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    ????? <mirrorOf>central</mirrorOf>????? ??

    ??? </mirror>

    ?

    ? </mirrors>

    ?

    3.? 入門配置

    需求:通過命令行,使用Maven項目創建一個Java項目,并且打包。

    ?

    3.1.?? 第一步:創建項目

    使用mvn archetype:generate命令創建java項目

    ?

    ?

    ?

    ?

    ?

    ?

    3.2.?? 第二步:設置坐標信息

    設置坐標信息,通過以下三個信息確定坐標。標記全球Maven項目的唯一性。

    groupId:組織ID

    artifactId:項目名

    package:包名

    ?

    ?

    --提示,創建成功

    ?

    ?

    ?

    3.3.?? 第三步:編譯項目

    使用命令 mvn compile

    ?

    ?

    --編譯成功,生成target文件夾

    ?

    ?

    3.4.?? 第四步:打包

    通過命令mvn package

    ?

    ?

    --打包成功,在target文件夾下會生成jar包

    ?

    ?

    ?

    --通過該入門示例,可以發現,使用Maven創建構建項目,是可以不依賴任何開發工具的。

    ?

    通過該入門示例,我們看到了我們需要學習的內容包括:Maven的命令、倉庫

    ?

    問題:默認Maven倉庫在哪里?

    答:C:\Users\YL\.m2 ,在登錄用戶的個人文件夾里面的.m2文件夾就是倉庫

    ?

    問題:有什么辦法了解更多的mvn的命令呢?

    答:mvn下的命令都是一個插件,Maven工具內置的可以使用的插件都在其官方幫助文檔找到說明。

    https://maven.apache.org/plugins/index.html

    ?

    4.? Eclipse使用Maven

    4.1.?? 配置Maven

    4.1.1.? 第一步:打開Eclipse首選項

    ?

    ?

    4.1.2.? 第二步:配置外部Maven

    配置指定外部的Maven

    ?

    ?

    --選擇使用配置的外部的Maven

    ?

    ?

    4.1.3.? 第三步:【可選】查看默認本機倉庫

    ?

    ?

    ?

    ?

    4.2.?? 通過Maven創建普通項目

    ?

    4.2.1.? 第一步:創建一個Maven項目

    ?

    ?

    ?

    4.2.2.? 第二步:創建一個自定義的Maven項目

    ?

    ?

    ?

    4.2.3.? 第三步:設置項目構建信息

    GroupId:組編號

    ArtifactId:項目標識符(項目的項目名)

    注意:Maven是通過GroupId和ArtifactId來確定項目的唯一性,我們稱為坐標。任何項目要發布到Maven的庫中,必須要有一個全球唯一的坐標。

    ?

    Version:發布的版本號

    Packaging:打包方式。

    (1)jar:以jar包方式打包,普通java項目

    (2)war:以war包方式打包,是web項目

    (3)pom:不打包,表示該項目是一個聚合項目。在多子項目的項目中,用于管理公用Maven構建屬性

    Name:【可以忽略】就是一個項目的一個名稱,實際實戰中,一般跟ArtifactID一致。

    Description:【可以忽略】就是項目的描述

    ?

    ?

    ?

    --創建成功

    ?

    ?

    ?

    4.2.4.? 第四步:創建一個簡單的HelloWorld類

    package cn.zj;

    public class HelloWorld {

    ???

    ??? public static void main(String[] args) {

    ??????? System.out.println("HelloWorld");

    ??? }

    }

    ?

    4.2.5.? 第五步:構建項目

    注意:

  • Maven build:用于執行Maven的命令
  • Maven Clean:等同執行 mvn clean
  • Maven generate-source:等同 mvn build
  • Maven Intall:等同 mvn install 。同時執行,清除、編譯、測試、打包、并將包安裝到maven倉庫
  • ?

    ?

    --構建成功

    ?

    ?

    ?

    4.3.?? 通過Maven創建Web項目

    4.3.1.? 第一步:創建一個Maven項目

    ?

    --創建項目后,報錯信息。提示沒有web.xml

    解決方案:

    (1).通過<failOnMissingWebXml>標簽忽略web.xml

    (2).創建一個web.xml文件

    ?

    ?

    ?

    4.3.2.? 第二步:創建web.xml

  • 創建一個在src/main/webapp下創建WEB-INF文件夾
  • ?
  • 在WEB-INF文件下創建一個web.xml文件
  • --通過xsd規則文件創建

    ?

    --創建成功后,報錯消失。!!!!

    ?

    選中項目右鍵

    ?

    ?

    4.3.3.? 第三步:創建一個index.jsp

    ?

    發現,報錯。原因是沒有加入JSP依賴的ServletAPI以及JSP的類庫。

    ?

    4.3.4.? 第四步:通過POM.xml加入依賴的類庫

    --依賴的類庫的jar的坐標取哪里找?

    答:可以在一下的公有倉庫找。

    http://mvnrepository.com/

    ?

    http://search.maven.org/

    注意:以后我們開發出來的功能組件希望讓別人通過Maven使用,也可以提交到這兩個用于庫

    ?

    <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>cn.zj</groupId>

    ??? <artifactId>maven-demo-02-web</artifactId>

    ??? <version>0.0.1-SNAPSHOT</version>

    ??? <packaging>war</packaging>

    ?

    ??? <!-- 增加web項目依賴的類庫 -->

    ??? <dependencies>

    ??????? <!-- servlet api -->

    ?

    ??????? <dependency>

    ??????????? <groupId>javax.servlet</groupId>

    ??????????? <artifactId>javax.servlet-api</artifactId>

    ??????????? <version>3.0.1</version>

    ????????????? <scope>provided</scope>

    ??????? </dependency>

    ???????

    ??????? <!-- jsp -->

    ?

    ??????? <dependency>

    ??????????? <groupId>javax.servlet.jsp</groupId>

    ??????????? <artifactId>javax.servlet.jsp-api</artifactId>

    ??????????? <version>2.2.1</version>

    ????????????? <scope>provided</scope>

    ??????? </dependency>

    ??? </dependencies>

    </project>

    注意事項,創建Maven項目是報異常,可以強制更新項目

    --右擊項目-->選擇Maven-->Update Project

    ?

    --強制更新

    ?

    ?

    ?

    ?

    ?

    4.3.5.? 第五步:通過Maven運行Tomcat啟動項目

    -1.安裝tomcat7的Maven插件

    ?

    所有的Maven工具內置插件都是有在https://maven.apache.org/plugins/index.html找到。

    ?

    ?

    --安裝2.2 版本

    ?

    在pom.xml 配置配置tomcat插件

    <!-- 構建項目的相關環境 -->

    ??? <build>

    ???????? <plugins>

    ???????????? <!-- tomcat運行插件 -->

    ???????????? <plugin>

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

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

    ????????????????? <version>2.2</version>

    ???????????? </plugin>

    ???????? </plugins>

    ??? </build>

    4.3.6.? 使用Tomcat插件運行Maven項目

    點擊項目鼠標右鍵

    ?

    4.3.7.? Maven下面Tomcat插件 項目細節配置

    Tomvat 默認項目上下文路徑是項目名稱,默認端口是 8080

    開發者可以手動配置插件信息

    ??? <build>

    ???????? <!-- 插件 -->

    ???????? <plugins>

    ???????????? <!-- tomcat 插件 -->

    ???????????? <plugin>

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

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

    ????????????????? <version>2.2</version>

    ????????????????? <!-- 細節配置 -->

    ????????????????? <configuration>

    ????????????????????? <!-- 上下文路徑 -->

    ????????????????????? <path>/maven</path>

    ????????????????????? <!-- 端口配置 -->

    ????????????????????? <port>80</port>

    ????????????????? </configuration>

    ???????????? </plugin>

    ???????? </plugins>

    ??? </build>

    5.? 修改jre 依賴版本

    Maven 默認依賴的jar版本是 1.5,開發者可以配置jre版本,有兩種配置方式

    ?

    5.1.?? 單獨為某一個項目配置

    <build>

    ??? <!-- 插件 -->

    ??? <plugins>

    ???????? <!-- tomcat 插件 -->

    ???????? <plugin>

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

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

    ???????????? <version>2.2</version>

    ???????????? <!-- 細節配置 -->

    ???????????? <configuration>

    ????????????????? <!-- 上下文路徑 -->

    ????????????????? <path>/maven</path>

    ????????????????? <!-- 端口配置 -->

    ????????????????? <port>80</port>

    ???????????? </configuration>

    ???????? </plugin>

    ???????? <plugin>

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

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

    ???????????? <configuration>

    ????????????????? <!-- 源代碼版本 -->

    ????????????????? <target>1.8</target>

    ????????????????? <!-- 編譯后版本? -->

    ???????????? ??? <source>1.8</source>

    ???????????? </configuration>

    ???????? </plugin>

    ??? </plugins>

    </build>

    ?

    5.2.?? 修改setting.xml配置文件

    可以修改? maven根/confg/setting.xml 在 <profiles> 標簽中添加如下代碼,使用此種方式全局生效

    以后創建的項目全部都是1.8版本

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

    ?

    ?

    6.? 通過Maven創建多個工程組成的項目

    需求:使用Maven項目創建一個ssm整合的項目。項目的每一層為一個工程。

    ?

    6.1.?? 第一步:創建Maven項目

    注意:

  • 表示層是WEB項目,其他的都是功能組件,所以使用普通的Jar項目
  • Parent項目是一個聚合項目,主要用于維護統一的包依賴,統一的插件,統一構建項目(測試、編譯、打包)
  • 6.1.1.? 創建parent-項目

    ?

    6.1.2.? 創建聚合項目的子模塊項目

    ?

    ?

    6.1.3.? 最終效果

    ?

    ?

    6.2.?? 第二步:Eclipse實現項目分組

    (1)? .將項目列表使用Working Sets顯示

    ?

    ?

    (2)? .插件一個項目分組

    ?

    ?

    (3)設置項目組信息

    ?

    --分組后結果

    ?

    ?

    6.3.?? 第三步:聚合項目后的效果

    --聚合所有需要構建的工程,可以實現統一構建項目。所謂的統一構建項目,就是統一的執行清除、測試、編譯、打包等操作

    --在聚合項目ssm-parent通過 <modules>實現聚合所有的需要統一構建的項目

    ?

    ?

    --代碼

    <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>cn.zj</groupId>

    ? <artifactId>ssm-parent</artifactId>

    ? <version>0.0.1-SNAPSHOT</version>

    ? <packaging>pom</packaging>

    ? <description>這是一個聚合項目,本身至于維護其它子項目的包關系插件等</description>

    ?

    ? <!-- 通過引入模塊的形式,將項目的其他模塊引入在一起 -->

    ? <modules>

    ? <module>ssm-mapper</module>

    ? <module>ssm-service</module>

    ? <module>ssm-pojo</module>

    ? <module>ssm-web</module>

    ? <module>ssm-util</module>

    ? </modules>

    </project>

    ?

    6.4.?? 第四步:項目的繼承

    注意:所謂的項目繼承,就是一個項目已經在pom.xml聲明的各種元素,繼承的子工程的pom.xml也獲得該父工程的pom.xml所有聲明的元素。

    ?

    前提:以前如果每個工程需要使用Log4J和Junit,都要在各自的項目的pom.xml加入依賴。這樣做他麻煩了。

    需求:在ssm-parent聲明一次依賴Log4J和Junit,其他所有的子工程都可以使用。

    ?

    (1)在父包加入了依賴

    ?

    ?

    (2)在子項目繼承父工程。也獲得了父工程聲明的元素

    ?

    ?

    6.5.?? 第五步:依賴包的版本統一管理

    需求:實現所有項目依賴的類庫的版本統一管理。

    ?

    答:可以通過屬性的設置與版本鎖定,使用依賴包的統一管理

    (1)父項目,設置屬性與版本鎖定

    <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>cn.zj.parent</groupId>

    ??? <artifactId>ssm-parent</artifactId>

    ??? <version>0.0.1-SNAPSHOT</version>

    ??? <packaging>pom</packaging>

    ??? <description>這是一個聚合項目,本身至于維護其它子項目的包關系插件等</description>

    ?

    ??? <!-- 通過屬性設置類庫版本 -->

    ??? <!-- 在properties標簽聲明的屬性,可以在作用范圍內的pom.xml里面使用${標簽名}訪問 -->

    ??? <properties>

    ??????? <!-- 注意:pom里面的屬性值,標簽名是自定義的,隨便寫,只有符合xml標簽規范 -->

    ??????? <log4j.version>1.2.17</log4j.version>

    ??????? <junit.version>4.12</junit.version>

    ??????? <springmvc.version>4.3.16.RELEASE</springmvc.version>

    ??? </properties>

    ??? <!-- 聲明依賴 -->

    ??? <dependencies>

    ??????? <dependency>

    ??????????? <groupId>log4j</groupId>

    ??????????? <artifactId>log4j</artifactId>

    ??????????? <version>${log4j.version}</version>

    ??????????? <!-- 打包的時候需要一起進去 -->

    ??????????? <scope>compile</scope>

    ??????? </dependency>

    ??????? <dependency>

    ??????????? <groupId>junit</groupId>

    ??????????? <artifactId>junit</artifactId>

    ??????????? <version>${junit.version}</version>

    ??????????? <!-- Junit打包的時候是不能放在包里面的 -->

    ??????????? <scope>test</scope>

    ??????? </dependency>

    ??? </dependencies>

    ?

    ??? <!-- 指定可以選擇的依賴庫的版本 -->

    ??? <!-- 放在dependencyManagement標簽里面的依賴庫,并沒有被使用,只是聲明了,可選.版本鎖定

    ??? ?這個意味著,如果在作用范圍內(本pom.xml以及子pom.xml)里面使用到dependencyManagement標簽

    ??? ?指定版本的類庫,必須在在指定版本

    ??? ?-->

    ??? <dependencyManagement>

    ??????? <dependencies>

    ??????????? <dependency>

    ??????????????? <groupId>org.springframework</groupId>

    ??????????????? <artifactId>spring-webmvc</artifactId>

    ??????????????? <version>${springmvc.version}</version>

    ??????????? </dependency>

    ??????? </dependencies>

    ??? </dependencyManagement>

    ??? <!-- 通過模塊的方式,將所有統一構建的項目聚合起來 -->

    ??? <modules>

    ??????? <module>ssm-web</module>

    ??????? <module>ssm-service</module>

    ??????? <module>ssm-mapper</module>

    ??????? <module>ssm-pojo</module>

    ??????? <module>ssm-utils</module>

    ??? </modules>

    </project>

    ?

    (2)子項目,不需要再指定版本鎖定的類庫的版本

    <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>cn.zj.controller</groupId>

    ? <artifactId>ssm-web</artifactId>

    ?

    ? <packaging>war</packaging>

    ?

    ? <!-- 繼承ssm parent項目 -->

    ? <parent>

    ??? <groupId>cn.zj.parent</groupId>

    ??? <artifactId>ssm-parent</artifactId>

    ??? <!-- 注意:如果一個多工程的項目,繼承了統一的父項目,版本號以父項目為準 -->

    ??? <version>0.0.1-SNAPSHOT</version>

    ???

    ? </parent>

    ?

    ?

    ? <dependencies>

    ? <dependency>

    ? ? <groupId>org.springframework</groupId>

    ? ? <artifactId>spring-webmvc</artifactId>

    ?

    ? </dependency>

    ? </dependencies>

    ?

    </project>

    6.5.1.? 依賴<scope>的范圍

    Scope 聲明依賴包在哪個階段有效

    Compile(默認)? spring,mybatis

    編譯(compile)時需要 測試時需要,,運行時需要,打包時需要

    Provided? jsp-api.jar?? servlet-api.jar

    編譯(compile)時需要,測試(test)時也需要 ,運行時不需要,打包時不需要

    ?

    Runtime?? 數據庫驅動包

    編譯時不需要,測試時需要,,運行時需要,打包時需要

    Test? junit.jar

    編譯時不需要,測試時需要,運行時不需要,打包也不需要

    ?

    ?

    6.6.?? 第六步:在ssm-web工程配置SpringMVC框架

    6.6.1.? 導入包依賴

    --在ssm-parent對依賴包版本鎖定

    <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>cn.zj.parent</groupId>

    ??? <artifactId>ssm-parent</artifactId>

    ??? <version>0.0.1-SNAPSHOT</version>

    ??? <packaging>pom</packaging>

    ??? <description>這是一個聚合項目,本身至于維護其它子項目的包關系插件等</description>

    ?

    ??? <!-- 通過屬性設置類庫版本 -->

    ??? <!-- 在properties標簽聲明的屬性,可以在作用范圍內的pom.xml里面使用${標簽名}訪問 -->

    ??? <properties>

    ??????? <!-- 注意:pom里面的屬性值,標簽名是自定義的,隨便寫,只有符合xml標簽規范 -->

    ??????? <log4j.version>1.2.17</log4j.version>

    ??????? <junit.version>4.12</junit.version>

    ??????? <springmvc.version>4.3.16.RELEASE</springmvc.version>

    ??????? <servlet-api.version>3.0.1</servlet-api.version>

    ??????? <jsp.version>2.2.1</jsp.version>

    ??? </properties>

    ?

    ?

    ??? <!-- 聲明依賴 -->

    ?

    ??? <dependencies>

    ??????? <dependency>

    ??????????? <groupId>log4j</groupId>

    ??????????? <artifactId>log4j</artifactId>

    ??????????? <version>${log4j.version}</version>

    ??????????? <!-- 打包的時候需要一起進去 -->

    ??????????? <scope>compile</scope>

    ??????? </dependency>

    ?

    ?

    ??????? <dependency>

    ??????????? <groupId>junit</groupId>

    ??????????? <artifactId>junit</artifactId>

    ??????????? <version>${junit.version}</version>

    ??????????? <!-- Junit打包的時候是不能放在包里面的 -->

    ??????????? <scope>test</scope>

    ??????? </dependency>

    ?

    ?

    ??? </dependencies>

    ?

    ??? <!-- 指定可以選擇的依賴庫的版本 -->

    ??? <!-- 放在dependencyManagement標簽里面的依賴庫,并沒有被使用,只是聲明了,可選.版本鎖定 這個意味著,如果在作用范圍內(本pom.xml以及子pom.xml)里面使用到dependencyManagement標簽

    ??????? 指定版本的類庫,必須在在指定版本 -->

    ??? <dependencyManagement>

    ??? ??? <dependencies>

    ??????????? <dependency>

    ??????????????? <groupId>org.springframework</groupId>

    ??????????????? <artifactId>spring-webmvc</artifactId>

    ??????????????? <version>${springmvc.version}</version>

    ??????????? </dependency>

    ?

    ??????????? <dependency>

    ??????????????? <groupId>javax.servlet</groupId>

    ??????????????? <artifactId>javax.servlet-api</artifactId>

    ??????????????? <version>${servlet-api.version}</version>

    ??????????????? <scope>provided</scope>

    ??????????? </dependency>

    ???????????

    ??????????? <dependency>

    ??????????????? <groupId>javax.servlet.jsp</groupId>

    ??????????????? <artifactId>javax.servlet.jsp-api</artifactId>

    ??????????????? <version>${jsp.version}</version>

    ??????????????? <scope>provided</scope>

    ??????????? </dependency>

    ?

    ??????? </dependencies>

    ?

    ??? </dependencyManagement>

    ?

    ??? <!-- 設置構建是的jdk的版本 -->

    ??? <build>

    ??????? <!-- 插件就是Maven命令 -->

    ??????? <plugins>

    ??????????? <!-- 修改編譯插件的JDK版本 -->

    ??????????? <plugin>

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

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

    ??????????????? <version>3.5</version>

    ??????????????? <!-- 配置屬性 -->

    ??????????????? <configuration>

    ?????????????????? <!-- 源代碼使用JDK1.8 -->

    ?????????????????? <source>1.8</source>

    ?????????????????? <!-- 生成的目標文件.class文件使用JDK1.8 -->

    ?????????????????? <target>1.8</target>

    ??????????????? </configuration>

    ??????????? </plugin>

    ??????? </plugins>

    ??? </build>

    ?

    ??? <!-- 通過模塊的方式,將所有統一構建的項目聚合起來 -->

    ?

    ??? <modules>

    ??????? <module>ssm-web</module>

    ??????? <module>ssm-service</module>

    ??????? <module>ssm-mapper</module>

    ??????? <module>ssm-pojo</module>

    ??????? <module>ssm-utils</module>

    ?

    ??? </modules>

    </project>

    ?

    --在ssm-web的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/xsd/maven-4.0.0.xsd">

    ??? <modelVersion>4.0.0</modelVersion>

    ??? <groupId>cn.zj.controller</groupId>

    ??? <artifactId>ssm-web</artifactId>

    ?

    ??? <packaging>war</packaging>

    ?

    ??? <!-- 繼承ssm parent項目 -->

    ??? <parent>

    ??????? <groupId>cn.zj.parent</groupId>

    ??????? <artifactId>ssm-parent</artifactId>

    ??????? <!-- 注意:如果一個多工程的項目,繼承了統一的父項目,版本號以父項目為準 -->

    ??????? <version>0.0.1-SNAPSHOT</version>

    ??????? <!-- 指定父工廠的pom.xml相對本pom.xml的相對路徑 -->

    ???????

    ??? </parent>

    ?

    ??? <!-- 增加依賴包 -->

    ?

    ??? <dependencies>

    ?

    ??????? <dependency>

    ??????????? <groupId>org.springframework</groupId>

    ??????????? <artifactId>spring-webmvc</artifactId>

    ?

    ??????? </dependency>

    ?

    ??????? <!-- servlet api -->

    ??????? <dependency>

    ??????????? <groupId>javax.servlet</groupId>

    ??????????? <artifactId>javax.servlet-api</artifactId>

    ??????? </dependency>

    ?

    ??????? <!-- jsp -->

    ??????? <dependency>

    ??????????? <groupId>javax.servlet.jsp</groupId>

    ??????????? <artifactId>javax.servlet.jsp-api</artifactId>

    ??????? </dependency>

    ??? </dependencies>

    ?

    ??? <!-- 運行tocmat7插件 -->

    ??? <build>

    ??????? <plugins>

    ???????

    ??????????? <plugin>

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

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

    ??????????????? <version>2.2</version>

    ??????????? </plugin>

    ??????? </plugins>

    ??? </build>

    ?

    </project>

    ?

    ?

    6.6.2.? 創建一個請求頁面

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    ??? pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>

    ?? <a href="${pageContext.request.contextPath }/user/add.do">add</a>

    </body>

    </html>

    ?

    6.6.3.? 編寫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_2_5.xsd"

    ??? id="WebApp_ID" version="2.5">

    ?

    ??? <!-- 配置SpringMVC的前端控制器(總控) -->

    ??? <servlet>

    ???????? <servlet-name>MVC</servlet-name>

    ???????? <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    ?

    ???????? <!-- 讀取Spring相關配置文件 -->

    ???????? <init-param>

    ???????????? <param-name>contextConfigLocation</param-name>

    ???????????? <!-- 因為spring相關配置文件可能有多個,所有使用*號通配符全部掃描 -->

    ???????????? <param-value>classpath:applicationContext*.xml</param-value>

    ???????? </init-param>

    ?

    ???????? <!-- 初始化容器 -->

    ???????? <load-on-startup>1</load-on-startup>

    ?

    ??? </servlet>

    ??? <servlet-mapping>

    ???????? <servlet-name>MVC</servlet-name>

    ???????? <url-pattern>*.do</url-pattern>

    ??? </servlet-mapping>

    ?

    </web-app>

    ?

    6.6.4.? 編寫配置文件spring-mvc.xml

    ?<!-- 配置包掃描 -->

    ??? <context:component-scan base-package="cn.zj.ssm"/>

    <!-- 開啟注解驅動 -->

    ??? <mvc:annotation-driven />

    ??? <!-- 配置視圖解析器 -->

    ??? <bean

    ???????? class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    ???????? <!-- 配置視圖跳轉的前綴 -->

    ???????? <property name="prefix" value="/WEB-INF/views/" />

    ???????? <!-- 配置視圖跳轉的后綴 -->

    ???????? <property name="suffix" value=".jsp" />

    ??? </bean>

    ?

    ?

    6.6.5.? 編寫Controller組件類

    package cn.zj.controller;

    ?

    import org.springframework.context.annotation.Scope;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    ?

    @Controller

    @Scope(value="request")

    @RequestMapping(value="/user")

    public class StudentController {

    ???

    ??? @RequestMapping(value="/add")

    ??? public void add(){

    ??????? System.out.println("-增加用戶-");

    ??? }

    ?

    }

    ?

    6.7.?? 第七步:在ssm-mapper工程配置Mybatis框架

    6.7.1.? 導入包依賴

    --ssm-mapper項目導入依賴

    <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>cn.zj.mapper</groupId>

    ? <artifactId>ssm-mapper</artifactId>

    ? <parent>

    ? ? <groupId>cn.zj.parent</groupId>

    ? ? <artifactId>ssm-parent</artifactId>

    ? ? <version>0.0.1-SNAPSHOT</version>

    ? ?

    ? </parent>

    ?

    ? <dependencies>

    ?????

    ??? ?<!-- jdbc driver -->

    ?

    ??? ?<dependency>

    ??? ??? <groupId>mysql</groupId>

    ??? ??? <artifactId>mysql-connector-java</artifactId>

    ??? ?</dependency>

    ??? ?

    ??? ?<!-- mybatis -->

    ?

    ??? ?<dependency>

    ??? ??? <groupId>org.mybatis</groupId>

    ??? ??? <artifactId>mybatis</artifactId>

    ??? ?</dependency>

    ??? ?

    ??? ?<!-- ssm-mapper項目依賴ssm-pojo項目 -->

    ??? ?<dependency>

    ??? ??? <groupId>cn.zj.pojo</groupId>

    ??? ??? <artifactId>ssm-pojo</artifactId>

    ??? ??? <version>0.0.1-SNAPSHOT</version>

    ??? ?</dependency>

    ??? ?

    ??? ?<!-- dbcp -->

    ??? ?<dependency>

    ??? ??? <groupId>org.apache.commons</groupId>

    ??? ??? <artifactId>commons-dbcp2</artifactId>

    ??? ?</dependency>

    ??? ?

    ? </dependencies>

    ?

    ?

    </project>

    6.7.2.? 創建操作映射注解

    --創建一個操作接口,編寫一個插入數據的SQL語句

    package cn.zj.mapper;

    ?

    import org.apache.ibatis.annotations.Insert;

    import org.apache.ibatis.annotations.Options;

    ?

    import cn.zj.pojo.User;

    ?

    public interface StudentMapper {

    ???

    ??? @Insert(value="INSERT INTO t_user? (name, phone, email)?? VALUES (#{name}, #{phone}, #{email})")

    ??? //操作后,實體對象需要ID,使用ID回填

    ??? @Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id")

    ??? int insert(User user);

    ?

    }

    ?

    6.7.3.? 編寫mybatis-config.xml配置文件

    ?

    在test/resources創建mybatis-config.xml配置文件

    ?

    ?

    --配置文件代碼

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >

    <configuration>

    ?

    ?? <environments default="mysql">

    ???? <environment id="mysql">

    ?????? <transactionManager type="JDBC"></transactionManager>

    ?????? <dataSource type="POOLED">

    ????????? <property name="driver" value="com.mysql.jdbc.Driver"/>

    ????????? <property name="url" value="jdbc:mysql://localhost:3306/sms"/>

    ????????? <property name="username" value="root"/>

    ????????? <property name="password" value="admin"/>

    ?????? </dataSource>

    ???? </environment>

    ?? </environments>

    ?? <!-- 加載映射接口 -->

    ?? <mappers>

    ????? <mapper class="cn.zj.mapper.UserMapper"/>

    ?? </mappers>

    </configuration>

    ?

    ?

    6.7.4.? 測試代碼

    package cn.zj.test;

    import java.io.IOException;

    import java.io.Reader;

    ?

    import org.apache.ibatis.io.Resources;

    import org.apache.ibatis.session.SqlSession;

    import org.apache.ibatis.session.SqlSessionFactory;

    import org.apache.ibatis.session.SqlSessionFactoryBuilder;

    import org.junit.Test;

    ?

    import cn.zj.mapper.UserMapper;

    import cn.zj.pojo.User;

    ?

    public class UserMapperTest {

    ???

    ??? @Test

    ??? public void insert(){

    ???????

    ???????

    ??????? try {

    ??????????? //1.獲得配置文件

    ??????????? Reader reader = Resources.getResourceAsReader("mybaits-config.xml");

    ??????????? //2.通過SqlSessionFactoryBuilder獲得SqlSessionFactory對象

    ??????????? SqlSessionFactoryBuilder build=new SqlSessionFactoryBuilder();

    ??????????? //獲得會話工廠

    ??????????? SqlSessionFactory sessionFactory = build.build(reader);

    ??????????? //獲得會話

    ??????????? SqlSession session = sessionFactory.openSession();

    ??????????? //獲得操作接口的動態對象

    ??????????? UserMapper mapper = session.getMapper(UserMapper.class);

    ??????????? User user=new User();

    ??????????? user.setName("王五");

    ??????????? int count = mapper.insert(user);

    ??????????? System.out.println(count);

    ??????????? //提交

    ??????????? session.commit();

    ??????????? session.close();

    ??????????? System.out.println(user.getStuId());

    ??????? } catch (IOException e) {

    ??????????? // TODO Auto-generated catch block

    ??????????? e.printStackTrace();

    ??????? }

    ??? }

    }

    ?

    ?

    6.8.?? 第八步:整合SpringMVC與Mybatis

    ?

    6.8.1.? 配置支持支持${key}獲得Properties文件值

    <!-- 讀取db.properties數據庫配置文件 -->

    <context:property-placeholder location="classpath:db.properties"/>

    ?

    <!-- 配置Druid連接池 -->

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

    ??? init-method="init" destroy-method="close">

    ??? <!-- setter方法注入屬性值 -->

    ??? <property name="driverClassName" value="${jdbc.driverClassName}" />

    ??? <property name="url" value="${jdbc.url}" />

    ??? <property name="username" value="${jdbc.username}" />

    ??? <property name="password" value="${jdbc.password}" />

    ??? <!-- 最大連接數 -->

    ??? <property name="maxActive" value="${jdbc.maxActive}" />

    </bean>

    ?

    6.8.2.? 整合Mybatis

    <!-- 配置MyBatis的 SqlSessionFactory對象 -->

    ??? <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

    ???????? <!-- 1. 注入數據源:連接池 -->

    ???????? <property name="dataSource" ref="dataSource"/>

    ????????

    ???????? <!-- 2.使用包掃描配置別名 -->

    ???????? <property name="typeAliasesPackage" value="cn.zj.ssm.pojo"/>

    ????????

    ???????? <!-- 3.引入MyBatis配置文件 mybatis-confg.xml -->

    ???????? <property name="configLocation" value="classpath:mybatis-config.xml"/>

    ????????

    ???????? <!-- 4.配置映射文件 -->

    ???????? <property name="mapperLocations" value="classpath:cn/zj/ssm/dao/*Mapper.xml"></property>

    ??? </bean>

    ??? <!-- 使用包掃描配置Mapper接口對應的代理對象

    ???????? 對應包下面的所有的接口全部會被創建代理對象, 默認都是 接口名的首字母小寫 作為 名稱 UserMapper->userMapper

    ??? ?-->

    ??? ?<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

    ??? ??? <!-- 配置SqlSessionfactory的bean對應的名稱(不是對象) -->

    ??? ??? <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

    ??? ???

    ??? ??? <!-- 配置需要掃描創建代理對象的包 -->

    ??? ??? <property name="basePackage" value="cn.zj.ssm.dao"/>

    ??? ?</bean>

    ?

    6.8.3.? 配置事物管理器

    <!-- 配置MyBatis事物管理器 -->

    ??? <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    ???????? <!-- 1. 注入數據源:連接池 -->

    ???????? <property name="dataSource" ref="dataSource"/>

    ??? </bean>

    ???

    ???

    ??? <!-- 配置事務 通知(增強) tx -->

    ??? <tx:advice id="txAdvice" transaction-manager="txManager">

    ???????? <!-- 配置事務方法 -->

    ???????? <tx:attributes>

    ???????????? <tx:method name="find*" read-only="true"/>

    ???????????? <tx:method name="get*" read-only="true"/>

    ???????????? <tx:method name="query*" read-only="true"/>

    ???????????? <tx:method name="select*" read-only="true"/>

    ???????????? <tx:method name="list*" read-only="true"/>

    ???????????? <!-- 需要事務的方法 -->

    ???????????? <tx:method name="*"/>

    ???????? </tx:attributes>

    ??? </tx:advice>

    ???

    ??? <!-- 使用aop切事務 -->

    ??? <aop:config>

    ???????? <!-- 配置切入點 -->

    ???????? <aop:pointcut expression="execution (* cn.zj.ssm.service..*.*(..))" id="pt"/>

    ????????

    ???????? <!-- 配置切面 = 切入點+ 通知 -->

    ???????? <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>

    ???????? <!-- 織入: spring完成 -->

    ??? </aop:config>

    ?

    7.? 常見問題

    問題1:已經下載到本地倉庫的jar。Eclipse如何快速加入到Pom.xml文件里面

    答:進入POM.xml對應的標簽位置,右擊選擇增加依賴或者插件。

    --選擇增加的依賴

    ?

    --選擇需要的依賴

    ?

    ?

    ?

    問題2:本地明明已經下載了對應的插件或者jar包。但Eclipse工具搜索不出來.

    答:原因是緩沖問題。可以清一下倉庫索引,操作步驟

    --打開Maven倉庫管理窗口

    ?

    --刷新索引緩存

    ?

    ?

    問題3:如何設置默認的JDK版本

    ??? <!-- 設置構建是的jdk的版本 -->

    ??? <build>

    ??????? <!-- 插件就是Maven命令 -->

    ??????? <plugins>

    ??????????? <!-- 修改編譯插件的JDK版本 -->

    ??????????? <plugin>

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

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

    ??????????????? <version>3.5</version>

    ??????????????? <!-- 配置屬性 -->

    ??????????????? <configuration>

    ?????????????????? <!-- 源代碼使用JDK1.8 -->

    ?????????????????? <source>1.8</source>

    ?????????????????? <!-- 生成的目標文件.class文件使用JDK1.8 -->

    ?????????????????? <target>1.8</target>

    ??????????????? </configuration>

    ??????????? </plugin>

    ??????? </plugins>

    ??? </build>

    ?

    問題4:設置打包安裝跳過Junit的測試

    ??????? <!-- 跳過測試代碼 -->

    ??????????? <plugin>

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

    ??????????????? <artifactId>maven-surefire-plugin</artifactId>

    ??????????????? <version>2.18.1</version>

    ??????????????? <configuration>

    ??????????????? ? <skipTests>true</skipTests>

    ??????????????? </configuration>

    ??????????? </plugin>

    ?

    ?

    8.? 小結

    Maven是什么?

    Maven是一個項目構建工具

    1,編譯--測試-打包-安裝 完全使用Maven即可完成

    2,Maven完全負責項目依賴包管理

    3,Maven內置集成Tomcat插件

    ?

    Maven相對手動構建項目優勢

    1. Maven有依賴倉庫,基本上擁有市面上所有的jar包

    (1)???? 更加方便jar包版本管理

    2. 互聯網各大開源的項目基本都是使用Maven項目構建

    3. 后面會講解SpringBoot(必須使用Maven)

    ?

    ?

    目前項目構建工具除了 Maven,還有一個項目構建工具Gradle

    轉載于:https://www.cnblogs.com/shenzhenhuicnblogs/p/11171984.html

    總結

    以上是生活随笔為你收集整理的Maven项目整合讲义(Eclipse版)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。