現在的java項目一般都是通過Maven管理jar包與版本,本身屬於依賴倒置,通過maven更方便的管理jar包。
當然,在安裝maven之前需要安裝配置好JDK,這部分省略。
配置maven的運行環境。
第一步
首先在http://maven.apache.org/download.cgi 上找到maven安裝包。解壓到硬盤你樂意的位置。
然后記錄maven的路徑 ,例如我的是:D:\mavenFile\apache-maven-3.5.3
第二步
我們開始配置環境變量。總共有三個環境變量需要配置。分別是M2(運行的bin目錄)、M2_HOME(運行的文件夾位置)、MAVEN_OPTS(運行的配置信息)。例如我的配置就是。
M2_HOME:D:\mavenFile\apache-maven-3.5.3
M2:D:\mavenFile\apache-maven-3.5.3\bin
MAVEN_OPTS: -Xms256m -Xmx512m
第三步
在你的Path環境變量下添加bin目錄的路徑,win7下也可以使用;%M2%代替
第四步
在CMD界面,運行 mvn --version。可查看當前maven的版本,安裝成功后可知。
創建maven項目
在eclipse創建mave項目非常簡單。
在項目管理的框內,右鍵創建 other.
搜索maven 創建maven Project。
你可以直接下一步來填寫所需信息創建mavan。(我建議你先讀完下面的pom講解再創建maven)
也可以在途中選中create a simple project.來創建含有父類pom的maven.
POM講解
POM 代表工程對象模型。它是使用 Maven 工作時的基本組建,是一個 xml 文件。它被放在工程根目錄下,文件命名為 pom.xml。
POM 包含了關於工程和各種配置細節的信息,Maven 使用這些信息構建工程。
POM 也包含了目標和插件。
在創建 POM 之前,我們首先確定工程組(groupId),及其名稱(artifactId)和版本,在倉庫中這些屬性是工程的唯一標識。
<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>com.dhh</groupId> <artifactId>p1802</artifactId> <version>0.0.1-SNAPSHOT</version> <name>blog</name> <description>mySelf blog</description> </project>
modelVersion:當前POM.xml的版本格式,這個是用來后台識別
groupId:公司組織表示,建議使用公司域名。也是jar包被mave打包后的存放路徑
artifactId:項目名,你的當前項目名。
version:版本號。
所有的 POM 都繼承自一個父 POM(無論是否顯式定義了這個父 POM)。父 POM 也被稱作 Super POM,它包含了一些可以被繼承的默認設置。
繼承可以讓我們避免一些不必要的通用性配置。可用CMD在項目文件夾下,運行:mvn help:effective-pom。查看父類pom的配置。
Maven生命周期
maven的生命周期一般如下:
1資源拷貝(本階段可以自定義需要拷貝的資源)
2編譯(本階段完成源碼編譯)
3打包配置(根據pom創建管理jar包)
4安裝(使用調用安裝工程包)
當 Maven 開始構建工程,會按照所定義的階段序列的順序執行每個階段注冊的目標。Maven 有以下三個標准的生命周期:
clean
default(or build)
site
其中clean包含pre-clean、clean 和 post-clean 階段。
我們執行clean操作可以直接使用工具也可以CMD在pom所在目錄下執行mvn post-clean
default(or build)的生命周期階段過多。如下表,不用細看,出錯再看
生命周期階段 | 描述 |
---|---|
validate | 檢查工程配置是否正確,完成構建過程的所有必要信息是否能夠獲取到。 |
initialize | 初始化構建狀態,例如設置屬性。 |
generate-sources | 生成編譯階段需要包含的任何源碼文件。 |
process-sources | 處理源代碼,例如,過濾任何值(filter any value)。 |
generate-resources | 生成工程包中需要包含的資源文件。 |
process-resources | 拷貝和處理資源文件到目的目錄中,為打包階段做准備。 |
compile | 編譯工程源碼。 |
process-classes | 處理編譯生成的文件,例如 Java Class 字節碼的加強和優化。 |
generate-test-sources | 生成編譯階段需要包含的任何測試源代碼。 |
process-test-sources | 處理測試源代碼,例如,過濾任何值(filter any values)。 |
test-compile | 編譯測試源代碼到測試目的目錄。 |
process-test-classes | 處理測試代碼文件編譯后生成的文件。 |
test | 使用適當的單元測試框架(例如JUnit)運行測試。 |
prepare-package | 在真正打包之前,為准備打包執行任何必要的操作。 |
package | 獲取編譯后的代碼,並按照可發布的格式進行打包,例如 JAR、WAR 或者 EAR 文件。 |
pre-integration-test | 在集成測試執行之前,執行所需的操作。例如,設置所需的環境變量。 |
integration-test | 處理和部署必須的工程包到集成測試能夠運行的環境中。 |
post-integration-test | 在集成測試被執行后執行必要的操作。例如,清理環境。 |
verify | 運行檢查操作來驗證工程包是有效的,並滿足質量要求。 |
install | 安裝工程包到本地倉庫中,該倉庫可以作為本地其他工程的依賴。 |
deploy | 拷貝最終的工程包到遠程倉庫中,以共享給其他開發人員和工程。 |
這個階段我們執行的命令是:mvn compile
Maven Site 插件一般用來創建新的報告文檔、部署站點等。執行命令為mvn site
倉庫
maven倉庫指的是存放文件所用的地方。分三種
本地倉庫。本地自己使用。
中央倉庫。項目組自己使用。
遠程倉庫。遠程調用。
本地倉庫
Maven 本地倉庫是機器上的一個文件夾。它在你第一次運行任何 maven 命令的時候創建。
Maven 本地倉庫保存你的工程的所有依賴(library jar、plugin jar 等)。當你運行一次 Maven 構建,Maven 會自動下載所有依賴的 jar 文件到本地倉庫中。它避免了每次構建時都引用存放在遠程機器上的依賴文件。
Maven 本地倉庫默認被創建在 %USER_HOME% 目錄下。要修改默認位置,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個路徑。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>C:/MyLocalRepository</localRepository> </settings>
中央倉庫
Maven 中央倉庫是由 Maven 社區提供的倉庫,其中包含了大量常用的庫。
中央倉庫的關鍵概念:
- 這個倉庫由 Maven 社區管理。
- 不需要配置。
- 需要通過網絡才能訪問。
要瀏覽中央倉庫的內容,maven 社區提供了一個 URL:http://search.maven.org/#browse。使用這個倉庫,開發人員可以搜索所有可以獲取的代碼庫。好像已經廢了不太好用
遠程倉庫
如果 Maven 在中央倉庫中也找不到依賴的庫文件,它會停止構建過程並輸出錯誤信息到控制台。為避免這種情況,Maven 提供了遠程倉庫的概念,它是開發人員自己定制倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。
項目構建
首先我們按之前所說創建一個maven
然后我們修改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>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies> </project>
你可以看到項目自動導入了jar包
然后你加入如下代碼導入servlet
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency>
最后導入SpringMVC的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>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.2.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.2.RELEASE</version> <scope>compile</scope> </dependency> </dependencies> </project>