Maven
- 介紹
Maven主要功能: 管理jar包依賴 還有項目編譯和項目管理
編譯工具發展史: Ant -> Maven -> Gradel
特性:
依賴管理系統、 多模塊構建、一致的項目結構 、一致的構建模型和插件機制
Maven項目結構和環境搭建
1、項目結構
src/main/java |
放java源碼 |
src/main/resources |
放資源配置文件(.xml .properties) |
src/test/java |
單元測試 |
src/test/resources |
放測試配置文件 |
pom.xml |
Maven項目的全局唯一配置 |
2、環境搭建
- 下載maven,並解壓! 放在一個不存在中文和空格的路徑中(存在中文或空格會報錯哦)
- 配置環境變量,在系統環境變量path中添加,maven的bin路徑
- 將m2壓縮包放在一個空文件夾中並解壓,並且將其repository根目錄複製粘貼到上述解壓後的maven/conf/settings.xml中localRepository的元素中,如下:<localRepository>D:/m2/m2/repository</localRepository>
- 驗證 mvn -v
5、編譯文件 mvn compile
6、運行文件
mvn exec:java -Dexec.mainClass="com.shsxt.demo.Hello"
(爲了測試,在java文件夾下面創建com/shsxt/demo/Hello.java類,所以編譯後的calss文件是com.shsxt.demo.Hello.class,這也是上述運行文件命令的雙引號中的內容)
eclipse中集成Maven
1、在window->preferences 中配置maven
2、創建普通java項目以及web項目
new project -> maven -> 模板有兩個quickstart(普通java項目)和webapp(web項目) -> 填寫項目信息,具體如下:
目錄結構
3、對項目的jdk依賴以及編譯進行設置,右擊項目-->properties中進行設置:
注意:如果是普通java項目雙擊Libraries/JRE System Library[],選擇如下的默認Workspace jre1.8
編譯環境選擇1.8版本
注意:如果是web項目,上述java build path中不能選擇Workspace jre1.8,而應選擇jdk(我解壓jdk的時候命名其爲java1.8),如下:
Web項目除了以上兩個配置(build path和compile),還要如下配置:
注意:Dynamic Web Moudule的3.0版本以及java的1.8版本要在workspace中項目的settings下面的org.eclipse.wst.common.project.facet.core.xml中設置(沒有以下設置,上述選擇不了相應的版本哦):
4、啓動web項目
兩種方式: 外置Tomcat 或者 maven插件(jetty 和 tomcat)
jetty小巧,啓動快,適合開發使用,tomcat性能高
在pom.xml中的build元素中添加如下代碼:
jetty方式:
<plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.25</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <contextPath>/test</contextPath> <!-- <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>8080</port> </connector> </connectors> --> </configuration> </plugin> </plugins> |
啓動: 右擊pom.xml -> run as 下的build mvn命令 |
|
Name隨便填,在Goals輸入框中填寫jetty:run 或者以下 jetty:run -D jetty.port=8989(或者在<plugin>標籤中設置) |
tomcat方式:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <!-- <port>8081</port> --> <path>/test </path> <uriEncoding>UTF-8</uriEncoding> <finalName>test </finalName> <server>tomcat7</server> </configuration> </plugin> |
同上: tomcat7:run |
5、打開瀏覽器訪問
6、爲防止webapp下的Index.jsp內容報錯
maven倉庫中可以下載javax,防止webapp下的Index.jsp內容報錯,網址: http://mvnrepository.com/,代碼放置在pom.xml的<dependecy>元素標籤中,代碼如下:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> |
- maven多模塊項目搭建
1、首先創建一個父項目:
創建一個簡單的工程,跳過模板選擇
packaging 選擇 pom
2、然後創建子項目:
項目組織
1. shsxt_par 父項目(maven project)
2. shsxt_dao dao 級別子項目(普通java項目)
3. shsxt_service service 級別子項目(普通java項目)
4. shsxt_web web 級別子項目(web項目)
還有shsxt_service以及shsxt_web創建過程和上述一樣;
注意:shsxt_web子項目是web項目,不是普通java項目。
3、配置子項目的互相依賴性,service依賴dao,web依賴service;即web項目同時依賴了兩個service和dao(這時候service項目中可以調用dao項目中的內容,web項目可以調用service以及dao項目中的內容)
4、右擊父項目-->run as-->maven install將項目連接起來
5、右擊web項目的pom.xml-->run as-->maven build進行填寫
6、瀏覽器進行訪問,http://localhost:9990/web/userWeb
- maven項目打包
對於maven 項目, 我們可以用過 pom.xml 配置的方式來實現打包時的環境選擇, 相比較其他形式打包工具, 通過 maven 只需要通過簡單的配置, 就可以輕鬆完成不同環境先項目的整體打包,如下操作:
1、在pom.xml的project元素標籤中添加如下代碼:
<!-- 打包環境配置 開發環境 測試環境 正式環境 --> <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <env>test</env> </properties> </profile> <profile> <id>product</id> <properties> <env>product</env> </properties> </profile> </profiles> |
2、配置項目資源文件,在pom.xml中的build標籤中添加如下代碼:
<resources> <resource> <directory>src/main/resources/${env}</directory> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> </resources> |
3、在src/main/resources下創建dev、product、test目錄
4、對應打包命令如下:
選中項目, 右鍵 run as ->maven build輸入命令
clean compile package -Dmaven.test.skip=true 打包默認環境( 開發環境)
並且跳過 maven 測試操作
clean compile package -Ptest -Dmaven.test.skip=true 打包測試環境並且
跳過 maven 測試操作
clean compile package -Pproduct -Dmaven.test.skip=true 打包生產環境並
且跳過 maven 測試操作
5、以上操作在對應的項目文件夾下生成對應的包