JAVAEE管理——Maven

Maven簡介

是apache下的一個開源項(xiàng)目,是純java開發(fā),并且只是用來管理java項(xiàng)目的

Maven好處

普通的傳統(tǒng)項(xiàng)目

圖片.png

Maven項(xiàng)目

圖片.png

依賴管理

need-to-insert-img

圖片.png

Maven的好處

依賴管理:就是對項(xiàng)目依賴的jar包的統(tǒng)一管理 可以節(jié)省空間

一鍵構(gòu)建

可以跨平臺

應(yīng)用于大型項(xiàng)目 可以提高開發(fā)效率

Maven構(gòu)建

下載安裝

need-to-insert-img

圖片.png

maven的核心文件 maven/apache-maven-3.5.4/conf/settings.xml

need-to-insert-img

核心文件

Maven的三種倉庫

本地倉庫 自己維護(hù)

配置本地倉庫需要修改setting.xml文件

<!-- localRepository

? | The path to the local repository maven will use to store artifacts.

? |

? | Default: ${user.home}/.m2/repository 默認(rèn)本地倉庫

? <localRepository>/path/to/local/repo</localRepository>

? -->> default 默認(rèn)的本地倉庫

遠(yuǎn)程倉庫 公司維護(hù)

中央倉庫 maven團(tuán)隊(duì)維護(hù)

Maven的目錄結(jié)構(gòu)

need-to-insert-img

maven項(xiàng)目目錄結(jié)構(gòu)

need-to-insert-img

Maven的目錄結(jié)構(gòu)

Maven的常用命令

clean清理

clean是maven工程的清理命令,執(zhí)行clean會刪除target目錄的內(nèi)容

need-to-insert-img

clean命令

Compile

Compile是maven工程的編譯命令,作用是將src/main/java下的文件編譯為class文件輸出到target目錄下

need-to-insert-img

圖片.png

Test

test是maven工程的測試命令,會執(zhí)行src/test/java下的單元測試類

need-to-insert-img

圖片.png

package

package是maven工程的打包命令,對于java工程執(zhí)行package打成jar包,對于web工程打成war包

need-to-insert-img

圖片.png

install 將項(xiàng)目發(fā)布到本地倉庫

install是maven工程的安裝命令,執(zhí)行install將maven打成jar包或war包發(fā)布到本地倉庫

對于web工程 發(fā)布到本地倉庫并沒有任何作用

need-to-insert-img

install

Tomcat:run 一鍵啟動

site 生成對應(yīng)的工程說明

Maven的生命周期

compile test package install

執(zhí)行install的時候 compile test package都會執(zhí)行

need-to-insert-img

圖片.png

clean的生命周期

maven對項(xiàng)目構(gòu)建過程分為三套相互獨(dú)立的生命周期。

CleanLifecycle 在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作

Default Lifecycle 構(gòu)建的核心部分,編譯,測試,打包,部署等

SiteLifecycle 生成項(xiàng)目報告,站點(diǎn) 發(fā)布站點(diǎn)

need-to-insert-img

各階段生命周期

不同的生命周期命令可以同時執(zhí)行

mvn cleanpackage

構(gòu)建Maven項(xiàng)目 IDE:Intelij idea

創(chuàng)建項(xiàng)目

need-to-insert-img

創(chuàng)建項(xiàng)目

選擇maven

need-to-insert-img

選擇maven

填寫項(xiàng)目信息

need-to-insert-img

圖片.png

添加tomcat插件

增加war打包

need-to-insert-img

圖片.png

添加web目錄 注意 這個目錄在main/webapp/

need-to-insert-img

創(chuàng)建web目錄

創(chuàng)建web資源目錄

need-to-insert-img

web資源

在pom.xml添加tomcat插件

need-to-insert-img

pom.xml配置

項(xiàng)目啟動配置

編輯配置

need-to-insert-img

編輯配置

添加+ 選擇maven

need-to-insert-img

圖片.png

配置maven命令

need-to-insert-img

配置maven命令

配置maven倉庫

need-to-insert-img

配置maven倉庫

在webapp下添加index.html

need-to-insert-img

圖片.png

啟動項(xiàng)目

need-to-insert-img

圖片.png

need-to-insert-img

圖片.png

參考大神文章:https://my.oschina.net/u/2935623/blog/1803198

maven坐標(biāo)定義

每個maven工程都需要定義本工程的坐標(biāo),坐標(biāo)是maven對jar包身份定義:

<!--項(xiàng)目名稱,定義為組織名+項(xiàng)目名 類似包名-->cn.probuing.maven<!--模塊名稱-->maven_tx<!--當(dāng)前項(xiàng)目版本號-->1.0-SNAPSHOT<!--打包類型-->war* jar:執(zhí)行package會打成jar包? ? * war:執(zhí)行package會打成war包? ? * pom:用于maven工程的集成,通常父工程設(shè)置為pom

maven與Struts2整合

使用struts2與maven傳遞一個客戶id 跳轉(zhuǎn)頁面

創(chuàng)建項(xiàng)目

need-to-insert-img

創(chuàng)建項(xiàng)目

設(shè)置packaging 為war

<?xml version="1.0"encoding="UTF-8"?>4.0.0cn.probuing.crmmavenProj1.0-SNAPSHOTwar

添加web目錄

need-to-insert-img

圖片.png

添加tomcat插件

org.apache.tomcat.maventomcat7-maven-plugin2.28080/mavssh

添加依賴 管理jar包

<!--依賴管理-->org.apache.strutsstruts2-core2.3.24javax.servletjsp-api2.0providedjavax.servletservlet-api2.5providedjunitjunit4.10

為避免包沖突,添加servlet-api.jar和jsp-api.jar 注意選擇scope為provided

配置struts2

struts.xml src/main/resources/

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC

? ? "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

? ? "http://struts.apache.org/dtds/struts-2.3.dtd"><!-- 配置常量 --><!-- 字符集 --><!-- 開發(fā)模式 --><!-- 主題 --><!-- 擴(kuò)展名 --><!-- 通用package -->/info.jsp

web.xml 核心過濾器

struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

編寫action

publicclassCutomerActionextendsActionSupport{privateLong custId;publicLonggetCustId(){returncustId;? ? }publicvoidsetCustId(Long custId){this.custId = custId;? ? }publicStringfindById(){returnSUCCESS;? ? }}

jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%>TitleHello Every body it's from maven

依賴范圍

Compile

編譯時需要,測試時需要,運(yùn)行時需要,打包時需要

Provided

編譯時需要,測試時需要,運(yùn)行時不需要,打包時不需要

Runtime

編譯時不需要,測試時需要,運(yùn)行時需要,打包時需要

Test

編譯時不需要,測試時需要,運(yùn)行時不需要,打包也不需要

整合框架時依賴沖突的解決

在我們整合框架的時候,在集成了多個框架的時候可能會出現(xiàn)依賴沖突的情況,我們解決依賴沖突主要有以下幾個方式

第一聲明優(yōu)先原則

優(yōu)先聲明的會先進(jìn)行配置,如下配置中Maven會集成spring-beans-4.2.4的依賴庫

<!--? spring-beans-4.2.4 -->org.springframeworkspring-context4.2.4.RELEASE<!--? spring-beans-3.0.5 -->org.apache.strutsstruts2-spring-plugin2.3.24

路徑優(yōu)先原則

自己指定jar包

org.springframeworkspring-beans4.2.4.RELEASE

添加排除

使用標(biāo)簽可以指定排除沖突的庫

org.apache.strutsstruts2-spring-plugin2.3.24org.springframeworkspring-beans

版本鎖定原則

<!--定義變量配置-->4.2.4.RELEASE5.0.7.Final2.3.24<!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->org.springframeworkspring-context${spring.version}

分模塊開發(fā)

依賴傳遞

依賴傳遞

依賴關(guān)系

父工程

模塊工程

依賴模塊工程的模塊工程

在這里需要注意的是 對于有些工程 定義的 依賴的生命周期為scope為test的依賴,需要手動添加到依賴中

作者:So_ProbuING

鏈接:http://www.itdecent.cn/p/6befb7cf32f8

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Maven簡介 是apache下的一個開源項(xiàng)目,是純java開發(fā),并且只是用來管理java項(xiàng)目的 Maven好處 ...
    So_ProbuING閱讀 661評論 0 0
  • 簡介 概述 Maven 是一個項(xiàng)目管理和整合工具 Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,507評論 6 39
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,500評論 19 139
  • 序 由于Andoird的UI元素采用的單一線程模型,只能在UI線程進(jìn)行更新,于是我們用來更新UI,常用Handle...
    andChen閱讀 588評論 0 3

友情鏈接更多精彩內(nèi)容