Maven是一個採用純Java編寫的開源項目管理工具, Maven採用了一種被稱之爲Project Object Model (POM)概念來管理項目,全部的項目配置信息都被定義在一個叫作POM.xml的文件中..
Maven是一款跨平臺的項目管理工具,是一個開源的項目...html
Maven主要服務於基於Java平臺的項目構建、依賴管理和項目信息管理...java
POM怎麼理解呢???web
在沒有使用Maven以前,咱們的jar包是否是很是雜亂???看一下我存放jar包的地方apache
在沒有學習Maven以前,我還想過把這些jar包一一整理出來,萬一硬盤壞了,那個人jar包又要去從新找了..並且因爲jar包版本的問題,已經吃過很多虧...這就須要大量時間去整理jar包了...編程
曾經想手動打jar包,結果Intellij idea好像不太支持這種功能??【我還沒找到】....因而只能依靠原生的jar 命令去打jar包了,過了一陣子,想從新打jar包的時候,又忘記命令了...很是苦惱...瀏覽器
而咱們的Maven就很是好地解決了上面這兩種狀況了,固然了,Maven的功能並非只有這麼一丟丟,我只是舉了兩個小例子而已...隨着咱們的學習,你將會看到Maven的強大之處...緩存
Maven能夠管理項目的整個聲明週期,包括清除、編譯,測試,報告、打包、部署等等。tomcat
自動構建項目服務器
構建步驟:微信
Maven擁有「約定優於配置「這麼一個理念,也就是說,把一些規範約定下來,人們就這麼用!若是咱們事先約定好全部項目的目錄結構,標準開發過程(編譯,測試) , 全部人都遵循這個約定。軟件項目的管理就會變得簡單不少。好比:如何過馬路(紅燈停綠燈行),如何開門,關門等。
去官網下載Maven軟件,解壓事後就算安裝完畢了...
由於Maven是由Java編寫的,所以想要使用Maven,首先要配置Java的環境變量...
檢測安裝Maven是否成功,在控制檯上打上 mvn -version就好了...
在咱們Maven中,有本地倉庫這麼一個概念,咱們能夠在settings.xml配置文件中修改本地倉庫的位置,好比我把本地倉庫放到桌面上
詳情可參照詳細的Maven教程---Idea環境下
值得追加的是:在修改web.xml路徑的時候,那篇博文並無給出絕對的路徑...這裏可能有些人不知道怎麼寫。我給出來參考
X:\Users\ozc\Desktop\zhongfucheng3\src\main\webapp\WEB-INF\web.xml
在咱們上一篇中已經知道了在Intellij idea下是如何使用Maven的了,建立出來的目錄結構是這樣子的:
上面的目錄結構就是Maven所謂的」約定「,咱們使用Maven來構建Java項目,都是這種目錄結構的...
接下來咱們來了解一下Mavaen一些經常使用的術語
本地倉庫
中心倉庫:
apache-maven-3.2.1libmaven-model-builder-3.2.1orgapachemavenmodel下的POM.xml文件中已經配置好了
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
私有服務器
軟件的生命週期就是如下
- 清除--> 編譯-->測試-->報告-->打包(jarwar)-->安裝-->部署
當咱們使用idea環境下開發,maven生命週期的插件就很是清晰了...
座標的組成: groupId + artifactId+ version
pom.xml介紹 :project object model 項目對象模型 ,它是maven核心配置文件
當咱們把上面的術語瞭解完之後,對下面pom.xml配置文件就不會感到陌生了。
<?xml version="1.0" encoding="UTF-8"?> <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>zhongfucheng3</groupId> <artifactId>zhongfucheng3</artifactId> <version>1.0-SNAPSHOT</version> </project>
若是咱們想要咱們的項目可以有Junit測試的開發包,咱們只要指定對應的jar包依賴就好了..
scope應用範圍有test、compile等等,默認是compile,那麼test和compile有什麼區別呢?
<scope>test</scope>
前面已經說過了,咱們使用Maven的使用,若是須要導入相對應的jar包,Maven首先會在咱們的本地倉庫中尋找--->私有倉庫--->中心倉庫...
然而,咱們的本地倉庫經常沒有想要的jar包的,而常常去中心倉庫下載這就很是浪費時間和資源了...所以咱們通常都有一個私有倉庫...
另外有些公司都不提供外網給項目組人員,所以就不能使用maven訪問遠程的倉庫地址,因此頗有必要在局域網裏找一臺有外網權限的機器,搭建nexus私服,而後開發人員連到這臺私服上,這樣的話就能夠經過這臺搭建了nexus私服的電腦訪問maven的遠程倉庫
咱們使用的是nexus框架來搭建私服,它屬於sonatype 機構的開源框架,用該框架架設maven 私有服務器
Nexus環境搭建
tomcat會自動解析war包,而後就自動下載插件...
訪問該項目,進到首頁
登錄...
每一個倉庫的做用:
倉庫組是一個虛擬的概念,就是經過對實體倉庫(proxy、hosted)進行聚合, 對外暴露一個統一的地址這裏要注意的是,放到左邊的倉庫,纔是會被聚合的倉庫
倉庫組的配置順序:
直接經過網站上傳,把桌面上的pig-0.12.1.jar上傳到私有服務器中
再次查看的時候,已經上傳上去了
在pom.xml文件配置私服的路徑、組id、版本等等
<!-- 假如沒有私服 ,則 本地倉庫找不到,則訪問中心倉庫 假若有私服 :訪問順序 首先訪問本地倉庫 本地倉庫沒有,則訪問私服倉庫 私服倉庫也沒有,則訪問中心倉庫 --> <!-- 加載的是 第三方項目使用的jar包 --> <repositories> <repository> <snapshots> <enabled>true</enabled> </snapshots> <id>public</id> <name>public</name> <url>http://localhost:8080/nexus-2.6.2/content/groups/public/</url> </repository> </repositories> <!-- 加載的是maven生命週期插件的jar包 --> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>public</id> <name>public</name> <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url> </pluginRepository> </pluginRepositories>
在本地倉庫中也把私服的jar包下載下來了
server的配置能夠在Maven的settings.xml中寫上
<!-- 分銷管理 ,把jar包發佈到私服中 --> <!-- 配置服務器--> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
值得注意的是:你得留意你用的是哪一個Maven,是你本身下載的Maven仍是使用Idea集成的Maven,若是沒有配置的話,那麼就會出現401錯誤。
<distributionManagement> <!-- 發佈到 快照版本的倉庫,即 測試版本倉庫 --> <snapshotRepository> <id>snapshots</id> <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url> </snapshotRepository> <!-- 發佈到 發行版本的倉庫中,也能夠發佈到3rd party 倉庫 --> <repository> <id>releases</id> <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url> </repository>
再次查看倉庫組
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同窗,能夠 關注微信公衆號:Java3y