maven使用
- maven手動創建
- maven常用的命令
- maven生命週期介紹-clean-default-site
- maven-pom文件簡介
- maven倉庫
- maven依賴
- maven聚合與繼承
- maven私服
-
maven測試
一:maven手動創建
- 使用命令行:mvn archetype:generate 創建,其實我們平時使用IDEA的時候就和這個差不多的。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=local
- -DgourpId: 組織名,公司網址的反寫 + 項目名稱
- -DartifactId: 項目名-模塊名
- -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,創建一個簡單的 Java 應用
- -DinteractiveMode: 是否使用交互模式
二:常用的命令
1:mvn compile:編譯源代碼; mvn test-compile :編譯測試代碼
2:mvn test:運行測試,編譯源代碼並運行測試代碼。
3:mvn package:打包,我試着的時候打了一個war包。
4:mvn install:將jar包部署到本地,比如兩條日誌中:
[INFO]Installing /home/sysadmin/mavnhomework/my-WebApp/target/my-WebApp.war to /home/sysadmin/.m2/repository/com/mycompany/app/my-WebApp/1.0-SNAPSHOT/my-WebApp-1.0-SNAPSHOT.war
[INFO] Installing /home/sysadmin/mavnhomework/my-WebApp/pom.xml to /home/sysadmin/.m2/repository/com/mycompany/app/my-WebApp/1.0-SNAPSHOT/my-WebApp-1.0-SNAPSHOT.pom
5:mvn deploy 遠程上傳jar
6:mvn clean 清除產生的項目
7:mvn help:effective-pom 窺探SuperPom
8:mvn dependency:tree maven依賴樹
9:mvn clean package -Pdev -Dmaven.test.skip=true 打包時候過濾dev環境的test
三:生命週期
https://www.runoob.com/maven/maven-build-life-cycle.html 這個瞭解一下
四:pom.xml文件和倉庫簡單介紹
以project開頭和結尾,定義命名空間,編碼格式等
依賴的父pom(mvn help:effective-pom )
groupId 屬於項目組,一般是公司 <groupId>com.mycompany.app</groupId>
atifactId 定義當前maven項目組中唯一的ID <artifactId>my-WebApp</artifactId>
version指定了當前項目額版本號 SNAPSHOT快照的意思 項目還在開發中不是穩定版本的意思 <version>1.0-SNAPSHOT</version>
packaging:打包方式 <packaging>war</packaging>
modelVersion指明當前pom模型的版本 maven2和3只能是這個<modelVersion>4.0.0</modelVersion>
name聲明瞭一個對於用戶更友好的項目名稱,可寫可不寫<name>my-WebApp Maven Webapp</name>
finalname 項目打包名稱<finalName>my-WebApp</finalName>(在build中定義)
profile:選擇相應的環境,beta,線上環境選擇(在build中定義)
倉庫有兩個版本:一個是不穩定的、處於開發中的版本:snapshot。穩定版本:release
本地倉庫就是respository.可以再setiing.xml可以修改自己本地倉庫<localRepository>目錄</localRepository>
中央倉庫是安裝maven中的lib/maven-model-builder-3.x.x.jar
五:maven依賴特性
依賴:
type:依賴類型
scope:依賴範圍 compple 編譯依賴範圍默認的。system系統依賴範圍。import導入依賴範圍。
test測試依賴範文,比如單元測試使用,打包部署是不是使用。
provided:已提供依賴範圍,打包發佈不適用,jdk已經提供好。
runtime:運行時依賴範圍,運行時使用。
optional:依賴是否可選
exclusions:排除傳遞依賴
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
依賴衝突解決:路徑優先原則;
指定在dependencyManagement:
<dependencyManagement>
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies>
</dependencyManagement>
六:maven繼承與聚合
- 聚合:能夠使用一個命令同時構建多個模塊
將兩個子工程用modules引入:
<modules>
<module>子工程pom</module>
<module>子工程pom</module>
</modules>
<packaging>pom</packaging>
- 繼承:生命父pom供子pom繼承
聚合模塊和繼承關機中的父模塊除了pom之外沒有實際的內容。
七:作業
- 使用archetype插件生成一個webapp項目。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=local
- 開發一個父子工程項目,並能夠正確構建,添加單元測試代碼,Main方法。要求:
繼承公司的父pmo(11bee-supom-generic),要求用當前最新的版本。提示,可以去nexus.corp.11bee.com看目前存在的版本。
使用properties佔位符修改spring各組件的版本爲你想指定的版本。
有依賴管理(dependencyManagement)。 - 使用assembly插件把依賴的所有jar包打到同一個包裏面。
可以直接在上面工程的pom中增加。
- 使用archetype插件生成一個webapp項目。
- 使用mvn assembly:assembly