## Maven是什么
Maven 是一個項目管理工具。它負責管理項目開發過程中的幾乎所有的東西。
**版本**
maven有自己的版本定義和規則
**構建**
maven支持許多種的應用程序類型,對于每一種支持的應用程序類型都定義好了一組構建規則和工具集。
**輸出物管理**
maven可以管理項目構建的產物,并將其加入到用戶庫中。這個功能可以用于項目組和其他部門之間的交付行為
**依賴關系**
maven對依賴關系的特性進行細致的分析和劃分,避免開發過程中的依賴混亂和相互污染行為
**文檔和構建結果**
maven的site命令支持各種文檔信息的發布,包括構建過程的各種輸出,javadoc,產品文檔等。
**項目關系**
一個大型的項目通常有幾個小項目或者模塊組成,用maven可以很方便地管理
**移植性管理**
maven可以針對不同的開發場景,輸出不同種類的輸出結果
## Maven的生命周期
maven把項目的構建劃分為不同的生命周期(lifecycle)。粗略一點的話,它這個過程(phase)包括:編譯、測試、打包、集成測試、驗證、部署。maven中所有的執行動作(goal)都需要指明自己在這個過程中的執行位置,然后maven執行的時候,就依照過程的發展依次調用這些goal進行各種處理。
這個也是maven的一個基本調度機制。一般來說,位置稍后的過程都會依賴于之前的過程。當然,maven同樣提供了配置文件,可以依照用戶要求,跳過某些階段。
## Maven的標準工程結構
Maven的標準工程結構如下:
|\-- pom.xml(maven的核心配置文件)
|\-- src
|\-- main
|?? `\-- java(java源代碼目錄)
|?? `\-- resources(資源文件目錄)
|\-- test
??????? `\-- java(單元測試代碼目錄)
|-- target(輸出目錄,所有的輸出物都存放在這個目錄下)
??? |\--classes(編譯后的class文件存放處)
## Maven的版本規范
maven使用如下幾個要素來唯一定位某一個輸出物:
### groudId
團體、組織的標識符。團體標識的約定是,它以創建這個項目的組織名稱的逆向域名(reverse domain name)開頭。一般對應著JAVA的包的結構。例如org.apache
### artifactId?
單獨項目的唯一標識符。比如我們的tomcat, commons等。不要在artifactId中包含點號(.)。
### version?
一個項目的特定版本。
### packaging?
項目的類型,默認是jar,描述了項目打包后的輸出。類型為jar的項目產生一個JAR文件,類型為war的項目產生一個web應用。
maven有自己的版本規范,一般是如下定義 ..- ,比如1.2.3-beta-01。要說明的是,maven自己判斷版本的算法是major,minor,incremental部分用數字比較,qualifier部分用字符串比較,所以要小心 alpha-2和alpha-15的比較關系,最好用 alpha-02的格式。
maven在版本管理時候可以使用幾個特殊的字符串 SNAPSHOT,LATEST,RELEASE。比如"1.0-SNAPSHOT"。各個部分的含義和處理邏輯如下說明:
### SNAPSHOT
這個版本一般用于開發過程中,表示不穩定的版本。
### LATEST
指某個特定構件的最新發布,這個發布可能是一個發布版,也可能是一個snapshot版,具體看哪個時間最后。
### RELEASE
指最后一個發布版。
- 我們在做什么?
- 為什么是內存?
- 我們實際上在做什么
- HTML基礎
- Web原理和HTML簡介
- Web原理
- HTML概念
- HTML標簽
- 標簽
- HTML固定基本結構
- 第一個HTML頁面
- 工具的使用
- 標題
- <hr>和<p>標簽
- 路徑概念
- 超級鏈接
- 列表
- 表格
- 表單的設計與使用
- 表單域的原理
- 文本框和密碼框
- 單選框和復選框
- 下拉列表框
- 多行文本和上傳
- 提交按鈕和重置按鈕
- 為CODING COFFEE加入在線購買頁
- HTML5
- 定位服務
- CSS
- CSS的基礎使用
- CSS簡介
- CSS樣式規則和加載方式
- 選擇器
- 偽類
- CSS優先級和層疊
- CSS顏色
- 背景圖片
- 文本
- CSS列表
- DIV+CSS布局
- 內聯元素和區塊元素介紹
- Display屬性
- 盒子模型的邊距和邊框
- 浮動和清除浮動
- 用Position屬性進行定位
- 專題:居中和對齊
- flex布局
- CSS新特性
- CSS3邊框
- 動畫
- Javascript
- HelloWorld
- 語句與變量
- 一切皆對象
- 標識符、注釋和區塊
- 基本數據類型和引用數據類型
- 語句
- 條件語句
- 循環語句
- 標準庫
- Array對象
- Number對象
- String對象
- JSON對象
- Math對象
- Date對象
- 數據類型
- typeof運算符
- number
- 字符串
- 布爾類型
- 函數
- 數組
- Dom模型
- Dom和Dom節點
- 特征相關屬性
- 節點對象方法
- Element對象
- Attribute對象
- Text節點和CSS操作
- 事件模型
- WebStorage
- BOM模型
- window對象
- 計時事件
- jQuery基礎
- 認識jQuery
- jQuery對象和DOM對象
- jQuery選擇器
- jQuery Dom操作
- 查找節點和創建節點
- 插入節點和刪除節點
- 復制節點和替換節點
- 包裹節點和屬性操作
- 樣式操作
- 設置和獲取HTML、文本和值
- 遍歷節點和CSS操作
- jQuery 事件和動畫
- 事件綁定與冒泡處理
- jQuery動畫
- jQuery 插件
- validate 插件
- jQuery與Ajax的應用
- Ajax簡介
- jquery中的Ajax
- Vue.js基礎與實戰
- HelloWorld
- v-for、v-on、v-model
- 組件化編程
- 生命周期函數(鉤子)
- 計算屬性、偵聽器、方法
- class與style綁定
- 關于組件的一些問題
- 單項數據流和Prop驗證
- 項目環境搭建
- 關于git的一些情況
- JavaWeb教程
- 對象和類的概念
- 對象和類的介紹
- 對象和類的介紹2
- 類的繼承與權限控制
- Object類
- 多態的內容
- 容器
- 流
- Servlet
- Servlet練習
- Session和Cookie
- JSP
- 內置對象
- JSTL和EL
- JDBC
- 文件上傳和下載
- 過濾器
- 數據庫
- 數據庫介紹
- MySQL的安裝
- SQL
- 表基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- 作業與練習
- Maven教程
- Maven安裝配置