【Maven】Maven 高階應用
Maven 高階應用
Maven 基礎
Maven 是一個專案管理工具,它有如下好處:
- 節省磁碟空間
- 可以一鍵構建
- 可以跨平臺使用
- 依賴傳遞和管理,提高開發效率
一鍵構建:Maven 自身集成了 Tomcat 外掛,可以對專案進行編譯、測試、打包、安裝、釋出等操作。
依賴傳遞和管理:Maven工程真正的 jar 包放置在倉庫中,專案中只需要配置上 jar 包的座標即可。座標的書寫規範,groupId
公司或組織域名的倒序,artifactId
專案名或模組名,version
版本號
座標示例:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.4</version> </dependency>
倉庫的種類和關係:
- 分為本地倉庫,遠端倉庫(私服),中央倉庫
- 啟動一個 Maven 工程的時候,pom.xml 會去本地倉庫尋找對應的 jar 包,預設情況下,如果本地倉庫沒有對應的 jar 包,Maven 工程會先私服(如果有)下載 jar 包到本地,如果沒有私服,則會從 中央倉庫 下載 jar 包到本地
Maven 依賴的作用域:
compile
預設值,參與當前專案的編譯、測試、執行等週期,是一個比較強的依賴,會被打包到最終的 artifact 中。provided
假定對應的依賴會由執行這個應用的 JDK 或者容器來提供,例如 ServletAPI 和 資料庫連線。理論上參與編譯、測試、執行等週期,不會被打包到最終的 artifact 中。runtime
參與測試、執行期等週期,不參與專案的編譯,會被打包到最終的 artifact 中。test
參與測試工作過程中的測試和執行,不會被打包到最終的 artifact 中。system
和 provide 類似,唯一的區別在於它需要使用者告訴 Maven 如何去找到這個依賴。import
從其它的 pom 檔案中匯入依賴設定,它只在dependencyManagement
元素下使用,表示從其他 pom 中匯入 dependency 的配置。
Maven 常用命令:
compile
編譯原始碼test
執行應用程式中的單元測試package
依據專案生成 jar 包install
在本地 Repository 中安裝 jar 包deploy
將 jar 包 上傳到私服clean
清除目標目錄中的生成結果
Maven 生命週期:
- 清理生命週期 在開始真正的專案構建之前進行一些清理工作。
- 預設生命週期 構建專案的核心部分,包括編譯、測試、打包、部署等。
- 站點生命週期 生成專案報告、站點,釋出站點。
傳統構建工程
定義專案 pom.xml
DAO 層
DAO 層 大致步驟為:
- 實體類:
- 持久層介面:
- DAO 層 Spring 配置檔案:
- 單元測試:
Service 層
Service 層 大致步驟為:
- 業務層介面:
- 業務層介面實現類:
- Service 層 Spring 配置檔案:
- 單元測試:
Web 層
Web 層 大致步驟為:
- 控制器類:
- SpringMVC 配置檔案:
- web.xml 配置檔案:
JSP 頁面
執行和除錯
新增 tomcat7 外掛,直接點選 run 即可
<build>
<plugins>
<!-- 新增 tomcat7 外掛 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
分模組構建工程
使用 IDEA 新建一個 Maven 工程,選擇 maven-archetype-webapp
- 建立 ssm_parent 父工程(打包方式選擇 pom,必須的)
- 建立 ssm_web 子模組(打包方式是 war 包)
- 建立 ssm_service 子模組(打包方式是 jar 包)
- 建立 ssm_dao 子模組(打包方式是 jar 包)
- 建立 ssm_domain 子模組(打包方式是 jar 包)
- web 依賴於 service,service 依賴於 dao,dao 依賴於 domain
- 在 ssm_parent 的 pom.xml 檔案中引入座標依賴
這就是繼承和聚合,通常繼承和聚合同時使用。繼承,建立一個 parent 工程將所需的依賴都配置在 pom 中。聚合,聚合多個模組執行。
繼承是為了消除重複,如果將 dao、service、web 分開建立獨立的工程則每個工程的 pom.xml 檔案中的內容存在重複,比如:設定編譯版本、鎖定 spring 的版本等,可以將這些重複的配置提取出來在父工程的 pom.xml 中定義。
專案開發通常是分組分模組開發,每個模組開發完成要執行整個工程需要將每個模組聚合在一起執行,比如:dao、service、web 三個工程最終會打一個獨立的 war 執行。
執行和除錯
啟動方式一:本地 Tomcat 啟動
這種方式需要注意選擇正確的 Artifacts,比如該專案就應該選擇 web 模組。
啟動方式二:Tomcat 外掛 啟動 root,直接點選 run 即可
啟動方式三:Tomcat 外掛 啟動 web 模組,需要先 root install