1:Maven目錄分析 bin:含有mvn運行的腳本 boot:含有plexus-classworlds類加載器框架 conf:含有settings.xml配置文件 lib:含有Maven運行時所需要的java類庫 Settings.xml 中默認的用戶庫: ${user.home}/.m2/repository[通過maven下載的jar包都會存儲到指定的個人倉庫中] Maven默認倉庫下載地址在: maven的lib目錄下maven-model-builder-3.0.4.jar的pom.xml中
2:創建目錄結構:
Hello
--src
-----main
----------java --用來存放Java文件
----------resources --用來存放資源文件
-----test
---------java --用來存放測試的Java文件
---------resources
--target --項目輸出位置,編譯完畢后自動生成
--pom.xml -- 項目對象模型的描述 ,它是maven配置的核心
3:建立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">
<!-- 當前pom的版本號 -->
<modelVersion>4.0.0</modelVersion>
<!-- groupId: 當前jar所屬的命名空間 -->
<groupId>cn.bie.maven</groupId>
<!-- 當前項目模塊名稱 -->
<artifactId>Hello</artifactId>
<!-- 當前項目的版本, SNAPSHOT鏡像版 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 當前模塊需要依賴的相關jar包,也稱為依賴管理, 所有被依賴的包都是通過"坐標"定位的 -->
<dependencies>
<!-- 需要依賴junit 通過 groupId+artifactId+version來查找,如果本地沒有則到中央倉庫下載 -->
<dependency>
<!-- 當前jar所屬的命名空間 -->
<groupId>junit</groupId>
<!-- 依賴的項目模塊的名稱 -->
<artifactId>junit</artifactId>
<!-- 依賴的版本號 -->
<version>4.9</version>
<!-- 依賴的范圍, 有 test compile privlege。test依賴的jar包的使用范圍,當測試的時候使用該jar包,正式發布,刪除這個 -->
<scope>test</scope>
</dependency>
</dependencies>
</project>
4:Maven核心概念:
4.1:Maven插件
Maven的核心僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的每個插件都能實現多個功能,每個功能就是一個插件目標
Maven的生命周期與插件目標相互綁定,以完成某個具體的構建任務, Maven的插件在: .m2\repository\org\apache\maven\plugins
4.2:Maven坐標
類似在平面幾何中坐標(x,y)可以標識平面中唯一的一點, Maven世界擁有大量構建,我們需要找一個用來唯一標識一個構建的統一規范
擁有了統一規范,就可以把查找工作交給機器
groupId:定義當前Maven項目隸屬項目 (實際對應JAVA的包的結構, 是main目錄里java的目錄結構)
artifactId:定義實際項目中的一個模塊(項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱)
version:定義當前項目的當前版本
4.3:Maven倉庫
何為Maven倉庫:用來統一存儲所有Maven共享構建的位置就是倉庫
Maven配置jar包的路徑為:groupId/artifactId/version/artifactId-version
本地倉庫(~/.m2/repository/):每個用戶只有一個本地倉庫
中央倉庫(Maven默認的遠程倉庫):Maven默認的遠程倉庫下載地址為:http://repo1.maven.org/maven2
私服:是一種特殊的遠程倉庫, 它是架設在局域網內的倉庫, 主要是為了團隊協作開發
鏡像:用來替代中央倉庫, 速度一般比中央倉庫快
4.4:軟件構建生命周期,maven軟件構建的生命周期
清除--> 編譯-->測試-->報告-->打包(jar\war)-->安裝-->部署。
maven生命周期命令插件(命令:mvn clean):clean--compile--test--package--install-deploy。
maven坐標:maven通過坐標的概念來唯一標識jar包或者war包
1:Maven官網:http://maven.apache.org/
Maven遠程倉庫:http://search.maven.org/
2:Maven是一個采用純Java編寫的開源項目管理工具,Maven采用了一種被稱之為Project Object Model(POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的配置文件中。通過該文件Maven可以管理項目的整個生命周期,包括,清除,編譯,測試,報告,打包,部署等等。目前,Apache下絕大數項目都已經采用Maven進行管理,而Maven本身還支持多種插件,可以很方便的控制項目,開發人員的主要任務應該是關注商業邏輯並去實現它,而不是把時間浪費到在學習如何在不同的環境中去依賴jar包,項目部署等等。Maven正是為了將開發人員從這些任務中解脫出來而誕生的。
3:Maven能夠做什么???
jar的聲明式依賴性管理;
項目自動構建,項目發布;
4:Maven的下載,安裝,配置,如下所示:
4.1:百度搜索Maven,然后找到Maven的官網,即Apache的官網:
找到Download,然后找到下圖箭頭所示的apache-maven-3.5.0-bin.zip;

4.2:下載完成之后直接找到一個適合的目錄解壓縮即可,然后找到maven的bin目錄,如下所示,復制一下,然后在你的電腦里面的環境變量里的path配置一下,如在path的后面加上;G:\baidu\maven\apache-maven-3.5.0\bin即可;記住前面那個英文分號哈。還需要配置的就是JAVA_HOME,這個之前配置jdk的話應該是配置的,如果沒配置,就配置一下,這個里面是jdk的路徑,如:E:\Android_java_resouce\jdk1.7

4.3:上面配置好之后驗證一下maven是否配置成功即可,在命令行測試maven的版本,如:mvn -version;出現如下所示即可;

4.4:這里需要聲明的是,Eclipse配置Maven需要看看Eclipse的版本,最新版的Eclipse已經集成了Maven,所以不再需要安裝Maven插件了,直接使用即可,這里簡單說一下;
4.4.1:首先打開Eclipse(Mars版本),然后選擇Window--->Preferences--->Maven
4.4.2:然后選擇installations--->Add--->Directory 
4.4.3:點擊Directory,選擇Maven解壓縮的路徑,如下演示所示:然后點擊finish即可。

4.4.4:之后將剛才添加的打上對號,點擊apply,然后點擊ok即可。

4.4.5:這里說明一點,因為開始java使用的是jdk外面的jre,但是出錯了,這里改成jdk1.7文件里面的jre即可。如下所示:
Window--->Preferences--->Java--->Installed JREs--->Add--->Standard VM
4.4.6:點擊Standard VM之后出現如下所示的,點擊Directory,之后選擇jdk1.7以及以上的目錄,選擇Finish即可。 
設置User setting,如下所示,在eclipse的preferences——>maven—–>user settings中有兩個配置:
global settings :本機器的配置,使用這台機器的所有用戶都是用這個配置;
user settings :當前用戶的配置;

5:測試安裝,配置的Maven,檢查自己安裝配置是否成功;
5.1:首先創建一個Maven工程;File--->New--->Other
5.2:點擊Other之后,找到Maven,然后Maven--->Maven Project,然后點擊Next;

5.3:點擊next之后默認即可,選擇Next;

5.4:點擊next之后點擊下面那個quickstart;然后點擊next即可;
在構件向導的時候選擇quickstart注意, 此向導也是插件,第一次使用的時候.也要從遠程倉庫中下載相應的jar包, 因此需要網絡環境;

如果創建web項目選擇下面這個即可:

5.5:點擊next之后出現如下所示的,然后將Group id和Artifact id填上,然后點擊Finish即可;
groupId:定義當前Maven項目隸屬項目 (實際對應JAVA的包的結構, 是main目錄里java的目錄結構)
artifactId:定義實際項目中的一個模塊(項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱)
version:定義當前項目的當前版本

5.6:點擊Finish之后出現如下所示的,點擊打開pox.xml,然后點擊pom.xml可以看這個pom.xm配置文件。

5.7:右擊pom.xml,然后Run as,然后Maven build;

5.8:如下演示所示,如果沒有報錯,說明編譯成功;

5.9:如下所示,如果package沒有出現錯誤,那么說明打包成功;

6:Maven常用的命令,坐標,倉庫,鏡像倉庫:
6.1:Maven常用的命令:
mvn -v(mvn -version):查看maven的版本;
mvn compile:編譯
mvn test:測試
mvn package:打包
mvn clear:刪除target
mvn install:安裝jar包到本地倉庫中
6.2:Maven的坐標:坐標構件,如groupId,artifactId,version。
6.3:Maven的倉庫分為本地倉庫和遠程倉庫(https://repo.maven.apache.org/maven2):
6.4:鏡像倉庫(國外的可能無法訪問,如果不翻牆的話,但是可以訪問國內的鏡像倉庫),使用默認即可,這里不用管即可;
6.5:更改倉庫的位置,這點很重要,maven默認存放在C盤(你可以看看存在C盤這個位置:C:\Users\bhlgo\.m2\repository),這點很不好,你修改到自己需要的位置,最好別存放到C盤哈,修改如下所示:在apache-maven-3.5.0\conf\找到settings.xml這個xml文件,然后按照下面的操作即可。修改之后保存即可,最后最好再將修改好的settings.xml復制一份到剛才創建的倉庫即:C:\Users\bhlgo\.m2\repository,因為這樣以后再更新maven的版本就不用再修改settings.xml了。好了,大功告成,趕緊測試,看看倉庫是否已經修改成功了(使用上面的5.7進行測試即可哦)。

6.6:使用阿里的鏡像,加快下載速度:你別說,阿里還真強。中國良心企業啊;修改如下所示:
修改位置:maven/apache-maven-3.5.0/conf/setting.xml里面的鏡像位置;
1 <!--阿里鏡像--> 2 <mirror> 3 <id>nexus-aliyun</id> 4 <mirrorOf>central</mirrorOf> 5 <name>Nexus aliyun</name> 6 <url>http://maven.aliyun.com/nexus/content/groups/public</url> 7 </mirror>

"萬事開頭難,開好頭,萬事都不難",令我十分感概的是,最近老賈負面新聞,頻出不凡,不知道這個大boss能不能如史大哥一樣翻身啊。
后續maven,使用maven創建struts項目測試:(將一些比較適合新手的補一下:)
1:File--->New--->Other--->Maven--->Maven Project--->next--->org.apache.maven.archetypes maven-archetype-webapp 1.0--->next--->如下圖--->finish

2:創建好之后會報錯,很正常,然后在src/main下面創建一個java文件夾,然后在src下面創建一個test文件夾,然后在test文件夾下面創建一個java文件夾;創建好之后還會報錯,然后將pom.xml修改一下(這是比較完整的pom.xml);
第4行:<groupId>com.bie.maven</groupId>
第5行:<artifactId>struts_20170506</artifactId>
第280行:<finalName>struts_20170506</finalName>
這三行修改成自己的項目名和組織名即可
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.bie.maven</groupId> 5 <artifactId>struts_20170506</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>shop Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <!-- <repositories> <repository> <id>nexus</id> <name>my-nexus-repository</name> 12 <url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url> <releases> 13 <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> 14 </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> 15 <id>nexus</id> <name>my-nexus-repository</name> <url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url> 16 <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> 17 </snapshots> </pluginRepository> </pluginRepositories> --> 18 <properties> 19 <java-version>1.8</java-version> 20 <junit-version>4.8.2</junit-version> 21 <org.springframework-version>3.2.4.RELEASE</org.springframework-version> 22 <jackson-mapper-asl-version>1.9.12</jackson-mapper-asl-version> 23 <jackson-core-asl-version>1.9.12</jackson-core-asl-version> 24 <mysql-connector-java-version>5.1.8</mysql-connector-java-version> 25 <org.mybatis-version>3.2.7</org.mybatis-version> 26 <org.mybatis-spring-version>1.2.2</org.mybatis-spring-version> 27 <opensymphony-version>2.4.2</opensymphony-version> 28 <freemarker-version>2.3.9</freemarker-version> 29 <c3p0-version>0.9.1.2</c3p0-version> 30 <commons-collections-version>1.0</commons-collections-version> 31 <commons-fileupload-version>1.2.2</commons-fileupload-version> 32 <org.apache.commons-version>3.1</org.apache.commons-version> 33 <commons-codec-version>1.6</commons-codec-version> 34 <dom4j-version>1.6.1</dom4j-version> 35 <javax.servlet-version>1.2</javax.servlet-version> 36 <aspectjweaver-version>1.6.6</aspectjweaver-version> 37 <slf4j-log4j12-version>1.6.6</slf4j-log4j12-version> 38 <log4j-version>1.2.16</log4j-version> 39 <javax.servlet-jsp-version>2.0</javax.servlet-jsp-version> 40 <cglib-version>2.2.2</cglib-version> 41 <slf4j-api-version>1.6.6</slf4j-api-version> 42 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 43 </properties> 44 <dependencies> 45 <!-- with junit4.8.2 --> 46 <dependency> 47 <groupId>junit</groupId> 48 <artifactId>junit</artifactId> 49 <version>${junit-version}</version> 50 <type>jar</type> 51 </dependency> 52 <!-- with spring --> 53 <dependency> 54 <groupId>org.springframework</groupId> 55 <artifactId>spring-core</artifactId> 56 <version>${org.springframework-version}</version> 57 </dependency> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-web</artifactId> 61 <version>${org.springframework-version}</version> 62 </dependency> 63 <dependency> 64 <groupId>org.springframework</groupId> 65 <artifactId>spring-test</artifactId> 66 <version>${org.springframework-version}</version> 67 </dependency> 68 <dependency> 69 <groupId>org.springframework</groupId> 70 <artifactId>spring-aspects</artifactId> 71 <version>${org.springframework-version}</version> 72 </dependency> 73 <dependency> 74 <groupId>org.springframework</groupId> 75 <artifactId>spring-context-support</artifactId> 76 <version>${org.springframework-version}</version> 77 </dependency> 78 <dependency> 79 <groupId>org.springframework</groupId> 80 <artifactId>spring-web</artifactId> 81 <version>${org.springframework-version}</version> 82 </dependency> 83 84 <dependency> 85 <groupId>org.springframework</groupId> 86 <artifactId>spring-webmvc</artifactId> 87 <version>${org.springframework-version}</version> 88 </dependency> 89 <dependency> 90 <groupId>org.springframework</groupId> 91 <artifactId>spring-jdbc</artifactId> 92 <version>${org.springframework-version}</version> 93 </dependency> 94 <dependency> 95 <groupId>org.springframework</groupId> 96 <artifactId>spring-tx</artifactId> 97 <version>${org.springframework-version}</version> 98 </dependency> 99 <dependency> 100 <groupId>org.springframework</groupId> 101 <artifactId>spring-instrument</artifactId> 102 <version>${org.springframework-version}</version> 103 </dependency> 104 <dependency> 105 <groupId>org.springframework</groupId> 106 <artifactId>spring-instrument-tomcat</artifactId> 107 <version>${org.springframework-version}</version> 108 </dependency> 109 <!--springmvc 轉 Json --> 110 <dependency> 111 <groupId>org.codehaus.jackson</groupId> 112 <artifactId>jackson-mapper-asl</artifactId> 113 <version>${jackson-mapper-asl-version}</version> 114 </dependency> 115 <dependency> 116 <groupId>org.codehaus.jackson</groupId> 117 <artifactId>jackson-core-asl</artifactId> 118 <version>${jackson-core-asl-version}</version> 119 </dependency> 120 <!--freemarker --> 121 <dependency> 122 <groupId>freemarker</groupId> 123 <artifactId>freemarker</artifactId> 124 <version>${freemarker-version}</version> 125 </dependency> 126 <!-- with mybatis-spring --> 127 <dependency> 128 <groupId>org.mybatis</groupId> 129 <artifactId>mybatis</artifactId> 130 <version>${org.mybatis-version}</version> 131 </dependency> 132 <dependency> 133 <groupId>org.mybatis</groupId> 134 <artifactId>mybatis-spring</artifactId> 135 <version>${org.mybatis-spring-version}</version> 136 </dependency> 137 <!-- jdbc driver --> 138 <dependency> 139 <groupId>mysql</groupId> 140 <artifactId>mysql-connector-java</artifactId> 141 <version>${mysql-connector-java-version}</version> 142 </dependency> 143 <!-- connect pool with c3p0 --> 144 <dependency> 145 <groupId>c3p0</groupId> 146 <artifactId>c3p0</artifactId> 147 <version>${c3p0-version}</version> 148 </dependency> 149 <!-- apache commons jar --> 150 <dependency> 151 <groupId>commons-collections</groupId> 152 <artifactId>commons-collections</artifactId> 153 <version>${commons-collections-version}</version> 154 </dependency> 155 156 <dependency> 157 <groupId>commons-fileupload</groupId> 158 <artifactId>commons-fileupload</artifactId> 159 <version>${commons-fileupload-version}</version> 160 </dependency> 161 162 <dependency> 163 <groupId>org.apache.commons</groupId> 164 <artifactId>commons-lang3</artifactId> 165 <version>${org.apache.commons-version}</version> 166 </dependency> 167 168 <dependency> 169 <groupId>commons-codec</groupId> 170 <artifactId>commons-codec</artifactId> 171 <version>${commons-codec-version}</version> 172 </dependency> 173 <!-- analyze xml use dom4j --> 174 <dependency> 175 <groupId>dom4j</groupId> 176 <artifactId>dom4j</artifactId> 177 <version>${dom4j-version}</version> 178 </dependency> 179 <!-- about servlet --> 180 <dependency> 181 <groupId>javax.servlet</groupId> 182 <artifactId>jstl</artifactId> 183 <version>${javax.servlet-version}</version> 184 </dependency> 185 186 187 <dependency> 188 <groupId>taglibs</groupId> 189 <artifactId>standard</artifactId> 190 <version>1.1.2</version> 191 </dependency> 192 <dependency> 193 <groupId>javax.servlet</groupId> 194 <artifactId>javax.servlet-api</artifactId> 195 <version>3.0.1</version> 196 <scope>provided</scope> 197 </dependency> 198 <dependency> 199 <groupId>org.slf4j</groupId> 200 <artifactId>slf4j-log4j12</artifactId> 201 <version>1.6.6</version> 202 </dependency> 203 <dependency> 204 <groupId>log4j</groupId> 205 <artifactId>log4j</artifactId> 206 <version>1.2.17</version> 207 </dependency> 208 209 <dependency> 210 <groupId>org.slf4j</groupId> 211 <artifactId>slf4j-api</artifactId> 212 <version>1.6.6</version> 213 </dependency> 214 <dependency> 215 <groupId>javax.activation</groupId> 216 <artifactId>activation</artifactId> 217 <version>1.1.1</version> 218 </dependency> 219 220 <!-- memcached --> 221 <dependency> 222 <groupId>com.google.code.maven-play-plugin.spy</groupId> 223 <artifactId>memcached</artifactId> 224 <version>2.4.2</version> 225 </dependency> 226 <dependency> 227 <groupId>cglib</groupId> 228 <artifactId>cglib</artifactId> 229 <version>${cglib-version}</version> 230 </dependency> 231 <dependency> 232 <groupId>net.fckeditor</groupId> 233 <artifactId>java-core</artifactId> 234 <version>2.6</version> 235 </dependency> 236 <dependency> 237 <groupId>org.json</groupId> 238 <artifactId>json</artifactId> 239 <version>20131018</version> 240 </dependency> 241 242 243 <dependency> 244 <groupId>com.sun.jersey</groupId> 245 <artifactId>jersey-client</artifactId> 246 <version>1.18.1</version> 247 </dependency> 248 <dependency> 249 <groupId>jsptags</groupId> 250 <artifactId>pager-taglib</artifactId> 251 <version>2.0</version> 252 </dependency> 253 254 <dependency> 255 <groupId>net.sourceforge.jexcelapi</groupId> 256 <artifactId>jxl</artifactId> 257 <version>2.6.10</version> 258 </dependency> 259 260 <dependency> 261 <groupId>opensymphony</groupId> 262 <artifactId>oscache</artifactId> 263 <version>2.4.1</version> 264 </dependency> 265 <dependency> 266 <groupId>javax.servlet</groupId> 267 <artifactId>servlet-api</artifactId> 268 <version>2.4</version> 269 <scope>provided</scope> 270 </dependency> 271 272 <dependency> 273 <groupId>org.apache.struts</groupId> 274 <artifactId>struts2-core</artifactId> 275 <version>2.3.8</version> 276 </dependency> 277 278 </dependencies> 279 <build> 280 <finalName>struts_20170506</finalName> 281 <plugins> 282 <plugin> 283 <groupId>org.apache.tomcat.maven</groupId> 284 <artifactId>tomcat7-maven-plugin</artifactId> 285 <version>2.2</version> 286 <configuration> 287 <url>http://localhost:8080/manager/text</url> 288 <username>admin</username> 289 <password>123</password> 290 </configuration> 291 </plugin> 292 </plugins> 293 </build> 294 </project>
錯誤分析:將上面做好之后我的報了一個錯,然后我將本地倉庫里面的dom4j刪除之后重新去pom.xml保存一下,然后就解決這個錯誤問題了;
Failure to transfer dom4j:dom4j:jar:1.6.1 from http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced. Original error: Could not transfer artifact dom4j:dom4j:jar:1.6.1 from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): Failed to transfer http://maven.aliyun.com/nexus/content/groups/public/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar. Error code 503, Service Unavailable
org.eclipse.aether.transfer.ArtifactTransferException: Failure to transfer dom4j:dom4j:jar:1.6.1 from http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced. Original error: Could not transfer artifact dom4j:dom4j:jar:1.6.1 from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): Failed to transfer
3:然后修改一下src/main/webapp/web-inf/web.xml文件, 修改成如下即可:不然不支持el表達式:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 3 <display-name>Archetype Created Web Application</display-name> 4 5 6 7 8 9 10 </web-app>
4:最后測試允許即可,上面講過,這里不敘述了;最需要注意的就是jdk的問題,
4.1:上面的4.4.5也說明這種情況
或者使用下面這種方法解決jdk的問題;
4.2:修改jre的版本:
第一步:打開官網:http://maven.apache.org/
第二步:點擊:maven plugins--->compiler--->
Example--->Compile Using -source and -target javac Options
第三步:之后:右鍵項目maven--->update project;
第四步:看着官網給的指導,將下面的第一種方式復制到自己的pom.xml里面的url標簽和dependencies標簽之間即可;
第二種方式在build標簽之間,自己看清楚即可;
1 <!-- pom修改jre的版本,第一種方式 --> 2 <properties> 3 <maven.compiler.source>1.7</maven.compiler.source> 4 <maven.compiler.target>1.7</maven.compiler.target> 5 </properties> 6 7 <!-- pom修改jre的版本,第二種方式 --> 8 <plugins> 9 <plugin> 10 <groupId>org.apache.maven.plugins</groupId> 11 <artifactId>maven-compiler-plugin</artifactId> 12 <version>3.6.1</version> 13 <configuration> 14 <source>1.7</source> 15 <target>1.7</target> 16 </configuration> 17 </plugin> 18 </plugins> 19
初識maven就告一段落了,還有很多事情等着自己去解決呢,加油~~~
5:Maven私服:
1:關於中央倉庫注意事項 地址: 目前來說: http://repo1.maven.org/maven2/是真正的Maven中央倉庫的地址,該地址內置在Maven的源碼中其他的都是鏡像 索引: 中央倉庫帶有索引文件以方便用戶對其進行搜索,完整的索引文件大小約為60M,索引每周更新一次 黑名單: 如果某個IP地址惡意的下載中央倉庫內容,例如全公司100台機器使用同一個IP反復下載,這個IP(甚至是IP段)會進入黑名單,因此稍有規模的使用Maven時,應該用Nexus架設私服 2:為什么需要私服 為什么要搭建nexus私服,原因很簡單,有些公司都不提供外網給項目組人員,因此就不能使用maven訪問遠程的倉庫地址,所以很有必要在局域網里找一台有外網權限的機器,搭建nexus私服,然后開發人員連到這台私服上,這樣的話就可以通過這台搭建了nexus私服的電腦訪問maven的遠程倉庫
圖片描述如下所示:

6:Nexus環境搭建(是開源的框架,屬於sonatype 機構的開源框架,用該框架架設maven 私有服務器):
官方網址:http://www.sonatype.org/nexus/
第一步:下載nexus-2.6.2.war包,然后拷貝到tomcat下的webapps目錄中,把nexus.war 包放到tomcat的webapp下面;
第二步:啟動tomcat,tomcat7有點慢 ,瀏覽且登錄,默認登錄賬戶密碼為: admin admin123
第三步:訪問http://localhost:8080/項目名稱,就是自己的nexus的名稱/

7:認識repository:
Nexus倉庫的默認的地址, nexus-2.1.2\WEB-INF\plexus.properties 中定義的在Views/Repositories-->Repositories里進行配置, nexus里可以配置3種類型的倉庫,分別是proxy、hosted、group; proxy:是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫下載,然后返回給用戶,相當於起到一個中轉的作用。代理倉庫 :代理中心倉庫的jar包。 Hosted:是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted里。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted里,宿主倉庫 ,該倉庫屬於該公司私有的。 Group:是倉庫組,在maven里沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要在pom中配置多個地址,只要統一配置group的地址就可以了右邊那個Repository Path可以點擊進去,看到倉庫中artifact列表。不過要注意瀏覽器緩存。我今天就發現,明明構件已經更新了,在瀏覽器里卻看不到,還以為是BUG,其實是被瀏覽器緩存了 virtual:也是中央倉庫鏡像,支持M1老版本。
8:每個倉庫的作用:
Central Repository:
最關鍵的一個配置, 就是Central Repository的proxy配置,因為大部分的構件,都是要通過這個proxy得到的,
3rd party: 無法從公共倉庫獲得的第三方發布版本的構件倉庫,第三方的jar包,但是該jar包沒有在中心倉庫保存,驅動.jar。
Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫,測試版本、鏡像版本 easyNet.war。
Central: 用來代理maven中央倉庫中發布版本構件的倉庫。
Central M1 shadow: 用於提供中央倉庫中M1格式的發布版本的構件鏡像倉庫。
Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫。
Releases: 用來部署管理內部的發布版本構件的宿主類型倉庫,發行版本。
Snapshots:用來部署管理內部的快照版本構件的宿主類型倉庫。
具體如下圖所示:

9:通過私服上傳下載jar包,上傳jar包:
1 (1):直接上傳jar包,通過網站直接上傳。 2 (2):把myEclispe項目上傳到私服。 3 (3):從私服中依賴jar包(下載jar包)。
配置Hosted Repository:
一般會配置3個hosted repository, 分別是3rd party、Snapshots、Releases,分別用來保存第三方jar(典型的比如ojdbc6.jar),項目組內部的快照、項目組內部的發布版, 這里並沒有什么特別的配置,只是Deployment Policy這個選項,一般Snapshots會配置成允許,而Releases和3rd party會設置為禁止;
配置group repository
前面說過group其實是一個虛擬的倉庫, 通過對實體倉庫(proxy、hosted)進行聚合, 對外暴露一個統一的地址這里要注意的是,放到左邊的倉庫,才是會被聚合的倉庫;

使用瀏覽器上傳如下所示:
上傳成功以后會彈出一個框提示你上傳成功了,如何驗證上傳成功了,如下所示:

最后在pom.xml里面配置相應的配置即可;
待續......
