Maven專案管理工具全方位詳解
Maven專案管理工具全方位詳解
1. Maven的簡介
1.1什麼是maven
Maven翻譯為“專家”、“內行”。它是apache下的一個開源專案,是一個專案管理工具,是純java開發,並且只是用來管理java專案的。
1.2Maven好處
(1)平時我們開發專案時,一般都是一個專案就是一個工程。我們劃分模組時,都是使用package來進行劃分。但是,當專案很大時,有很多子模組時,即使是package來進行劃分,也是讓人眼花繚亂。
優點一:專案非常大時,可藉助Maven將一個專案拆分成多個工程,最好是一個模組對應一個工程,利於分工協作。而且模組之間還是可以傳送訊息的。
(2)同一專案的jar包 複製 和 貼上到WEB/INF/lib下
問題:同樣的jar包重複出現在不同的工程中,一方面浪費空間,同時也讓工程臃腫
優點二:藉助Maven,可將jar包僅僅儲存在“倉庫”中,有需要該檔案時,就引用該檔案介面,不需要複製檔案過來佔用空間。
(3)如果jar包都到各個官網網站下載,會浪費很多時間,而且可能不全。
優點三:藉助Maven可以以規範的方式下載jar包,因為所有的知名框架或第三方工具的jar包已經按照統一的規範存放到了Maven的中央倉庫中。
(4)一個jar包依賴的其他jar包可能沒匯入到專案而導致專案跑不起來。
優點四:Maven會自動將你要加入到專案中的jar包匯入,不僅匯入,而且還會將該jar包所依賴的jar包都自動匯入進來。
1.3依賴管理
1.4專案一鍵構建
一個mvn tomcat:run
就可以執行專案
Maven能幹的事:
編譯 測試(junit) 執行 打包 部署
1.5小結:
1.5.1依賴管理
就是對jar包的統一管理 可以節省空間
1.5.2一鍵構建
1.5.3可以跨平臺
1.5.4主要應用於大型專案
可以提高開發效率
分析一個商城專案:
使用者管理 訂單管理 支付管理 ……
Maven的分模組開發
網際網路專案 按業務分
傳統專案 按層分 entity dao service web
2.Maven的安裝配置
2.1下載安裝
從
直接解壓到一個沒有中文沒有空格的資料夾裡解壓後的目錄如下:
Maven軟體的核心檔案:
*/conf/settings.xml
2.2Maven環境變數配置
1、要配置jdk
maven3.3.9這個版本所需的jdk版本必須要1.7以上
2、最終要執行的是maven軟體中bin目錄的mvn命令
所以要配置maven的環境變數
在系統變數新增
環境變數的名稱:MAVEN_HOME
變數值:就是maven軟甲解壓的目錄,我的是E:\apache-maven-3.3.9
3、把MAVEN_HOME新增到path裡
;%MAVEN_HOME%\bin;
4、驗證maven是否配置成功:
開啟dos視窗 輸入: mvn –v
2.3Maven倉庫
三種倉庫
1、本地倉庫 自己維護
本地倉庫的配置只需要修改settings.xml檔案就可以
2、遠端倉庫(私服) 公司維護
3、中央倉庫 maven團隊維護 約兩個億jar包
三種倉庫的關係如下:
3.演示入門程式
3.1Maven的目錄結構
3.2Maven的常用命令
mvn clean
清理編譯的檔案
mvn compile
編譯了主目錄的檔案
mvn test
編譯並執行test目錄的程式碼
mvn package
打包
mvn install
就是把專案釋出到本地倉庫
mvn tomcat:run
一鍵啟動
3.3Maven的生命週期(瞭解)
Compile test package install deploy(釋出到私服)
三種生命週期
Clean生命週期
Clean
Default生命週期
Compile test package install deploy
Site生命週期
Site
3.4命令和生命週期的階段的關係
不同的生命週期的命令可以同時執行
mvn clean package
4.專案構建
M2e外掛的安裝
Maven在eclipse的配置
1、選擇3.3.9版本的maven軟體
2、修改預設的本地倉庫地址
專案構建
1、新建maven專案
2、跳過骨架,如果不跳過骨架選擇創建出的專案目錄是不全的
2、填寫座標
3、建立工程
4、處理紅色叉號
手動在webapp資料夾下建立一個WEB-INF資料夾,在裡面放一個web.xml檔案
5、處理編譯版本
在pom.xml中新增如下程式碼
<build>
<!-- 配置了很多外掛 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
5、建立一個servlet
我建立了一個HelloServlet
修改web.xml
刪除重複的程式碼
xmlns=http://java.sun.com/xml/ns/javaee
新增jar包
在pom中新增如下程式碼:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
會發現jar包已新增到專案中
啟動專案
右擊專案—run as –maven build …
在Goals
中輸入tomcat:run
然後點選run
開啟瀏覽器,在位址列輸入http://localhost:8080/helloword/HelloServlet即可
5.依賴管理
Jar包的管理
需求:整合struts2
小功能:頁面上傳一個客戶id 跳轉頁面
5.1新增依賴:
開啟maven倉庫的檢視:
[Window]->[ShowView]->[Others]->[Maven]->[Maven Repositories]
5.2重建索引Rebuild Index
1、建立maven專案(同上)
2、跳過骨架(同上)
3、填寫座標資訊(同上)
4、新增web.xml檔案(同上)
5、修改編譯版本(同上)
6、新增座標 選擇Dependencies標籤 點選add
7、手動輸入要新增的座標,選擇版本
8、可以看到 pom.xml檔案中多出瞭如下程式碼
9、同樣的方式新增servlet-api.jar和jsp-api.jar 注意選擇scope為provided
10、寫action程式碼
import com.opensymphony.xwork2.ActionSupport;
public class CutomerAction extends ActionSupport {
private Long custId;
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String findById(){
return SUCCESS;
}
}
11、新增struts.xml檔案放到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">
<struts>
<!-- 配置常量 -->
<!-- 字符集 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- 開發模式 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 通用package -->
<package name="customer" namespace="/" extends="struts-default">
<action name="find" class="cn.itcast.action.CutomerAction"
method="findById">
<result name="success">/jsp/info.jsp</result>
</action>
</package>
</struts>
12、新增jsp頁面
15、修改web.xml檔案 新增過濾器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5.3依賴範圍
5.3.1Compile struts2-core
編譯時需要,測試時需要,執行時需要,打包時需要
5.3.2Provided jsp-api.jar servlet-api.jar
編譯時需要,測試時需要,執行時不需要,打包時不需要
5.3.3Runtime 資料庫驅動包
編譯時不需要,測試時需要,執行時需要,打包時需要
5.3.4Test junit.jar
編譯時不需要,測試時需要,執行時不需要,打包也不需要
新增外掛
Maven add plugin
如果用tomcat7執行用命令:
Tomcat7:run
常見問題: