Maven深入浅出
Maven總結
?
學習目標: Maven簡介、Maven倉庫、Maven的安裝和配置、Maven的使用
?
1.何為Maven
Maven是基于項目對象模型(POM),可以通過一小段描述信息來管理項目的構建、依賴管理和項目信息管理。
2.Maven是優秀的構建工具
自動化構建過程,從清理、編譯、測試到生成報告,再到打包和部署。是跨平臺的,無論是Windows上,還是Linux或Mac上,都使用相同命令。
3.Maven不僅僅是構建工具,也是依賴管理工具、項目信息管理工具。
4.Maven倉庫
Maven倉庫就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven項目可以從同一個Maven倉庫中獲取自己所需要的依賴JAR。
Maven倉庫分類
?
5.Maven倉庫——中央倉庫
查詢中央倉庫地址 ??http://search.maven.org
6.Maven倉庫——私服 ???
私服地址 ?http://10.10.8.201:8081/nexus/index.html
私服:一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。
私服優點:節省自己的外網帶寬、加速Maven構建、部署第三方構件、提高穩定性,增強控制、降低中央倉庫的負荷。
?
?工作當中要用的地址:
?<mirror>
??????<id>alimaven</id>
??????<name>aliyun maven</name>
??????<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
??????<mirrorOf>central</mirrorOf> ???????
????</mirror>
7.Maven安裝和配置
1.從http://maven.apache.org/download.html下載最新的maven,解壓到指定目錄。
2.配置環境變量
3.控制臺中執行mvn–v測試是否配置成功
???出現如下字樣:
?
?
4.添加需要使用的Maven位置【安裝——環境準備】
???
5.設置用戶settings.xml文件
?
8.Maven使用:新建一個Maven支持的web項目,選擇maven-archetype-webbapp模板。
9.?Maven項目目錄
?
10.?Maven使用
1.?新建一個Maven支持的web項目,選擇 maven-archetype-webbapp模板。
2.檢查項目的編碼是否是utf-8,檢查項目使用的jdk版本。
3.修改項目基本信息。
4.配置項目的自定義屬性及項目依賴。
?
?
?
10.2項目基本信息
modelVersion:當前POM模型版本,對于Maven3必須為4.0.0。
groupId:定義當前項目隸屬的實際項目。
artifact:定義實際項目中的一個Maven項目(模塊)。
version:定義Maven項目當前所處版本。
packaging:定義Maven項目打包方式。默認為jar。
classifier:定義構建輸出的一些附屬構件。生成javadoc等。由 插件自動生成,不能直接定義。
?
坐標:groupId:artifact:version:packaging
構件名稱:artifact-version[-classifier].packaging
10.3 依賴范圍
compile(編譯范圍) compile是默認的范圍,會被打包。
provided(已提供范圍) provided依賴只有在當JDK或者 一個容器已提供該依賴之后才使用。它們不是傳遞性的,也不會被打包。
runtime(運行時范圍) runtime依賴在運行和測試系統的 時候需要,但在編譯的時候不需要。
test(測試范圍)只有在測試編譯和測試運行階段可用。
system(系統范圍)必須顯式的提供一個對于本地系統中JAR文件的路徑。注意該范圍是不推薦使用。
11.?Maven使用后續工作
進行項目測試、打包。命令:mvn clean deploy
發布版本。
命令: mvn release:prepare 準備發布
? mvn release:rollback 回退release:prepare操作
mvn release:perform 執行版本發布
?
12.Maven常用命令
mvn archetype:generate :創建 Maven項目
mvn compile :編譯源代碼
mvn package : 依據項目生成 jar文件
mvn install :在本地 Repository中安裝 jar ?
mvn deploy:將jar包發布到遠程倉庫
mvn eclipse:eclipse :生成 Eclipse項目文件
13.項目開發階段
1創建項目
??項目類型 1 javase項目2 javaee項目
2編碼階段
???編碼+添加依賴jar包+TOMCAT配置
3編譯項目
??jdk的javac
4運行項目(找到項目的main方法)
??jdk的java命令
5打包發布
14.maven融合了四個階段(控制依賴jar倉庫)
<dependency>
?? <groupId>公司名(cn.easytop)</groupId>
?? <artifactId>項目名</artifactId>
?? <version>版本號</version>
</dependency>
?
SNAPSHOT(開發階段(不穩定))
RELEASE (發布階段(穩定))
15.?學習命令是作為開發工具的基礎,這樣會很容易上手。
16.?Maven原理圖
?
第二部分 maven的深入
1.?pom.xml決定了這個項目的類型 這個文件是整個maven項目的靈魂。
插件的理解:表示在maven構建中執行的jar名稱 插件名 -maven-plugin命名,可以通過jar包中plugins.xml中找到所有的配置定義
插件:其實就是臨時加上去的東西,比如游戲的外掛。
2.<scope>system</scope>作用 ?
介紹 scope各個值的參考
?
compile:默認的scope。任何定義在compile scope下的依賴將會在所有的class paths下可用。maven工程會將其打包到最終的arifact中。如果你構建一個WAR類型的artefact,那么在compile scope下引用的JAR文件將會被集成到WAR文件內。 ?
??
provided:這個scope假定對應的依賴會由運行這個應用的JDK或者容器來提供。最好的例子就是servlet API。任何在provided scope下定義的依賴在構建時的類路徑里是可用的,但是不會被打包到最終的artifact中。如果是一個WAR的文件,servlet API在構建時的類路徑里是可用的,但是并不會被打包到WAR文件中。 ?
??
runtime:在runtime scope下定義的依賴只會在運行期可用,而在構建期的類路徑下不可用。這些依賴將會被打包到最終的artifact中。比如你有一個基于web的應用需要在運行時訪問MySQL數據庫。你的代碼沒有任何MySQL數據庫驅動的硬依賴。你的代碼僅僅是基于JDBC API來編寫,在構建期并不需要MySQL數據庫驅動。然而,在運行期,就需要相應的驅動來操作MySQL數據庫了。因此,這個驅動應該被打包到最終的artifact中。 ?
??
test:只用于測試變異的依賴(比如JUnit),execution必須定義在test scope下。這些依賴不會被打包到最終的artefact中。 ?
??
system:于provided scope很像。唯一的區別在于,在system scope中,你需要告訴Mave如何去找到這個依賴。如果你要引用的依賴在Maven倉庫中不存在時,就可以用這個scope。不推薦使用system依賴。 ?
??
import:從其它的pom文件中導入依賴設置。
3.<!-- 依賴 當前的項目依賴那些jar -->
與它相關的所有jar包,全部下載下來
?
4.端口號 字符集(解決亂碼問題)
maven插件 表示在maven構建構成中執行的jar名稱 插件名-maven-plugin命名
可以通過 jar包中plugins中找到所有的配置定義
5.項目的關系繼承:
在創建項目時,選中pom類型,就是父類型。
特點:
只要是在《dependencies》中依賴的jar包,一定會出現在子類中,適合項目開發,而在《dependencyManagement》中出現的,在其子類中可以不出現,可以通過《parent》來找到父類,并通過《dependencies》來選擇父類中出現的jar包,適合框架開發。
?
總結
- 上一篇: 现代化 Android Pie: 安全与
- 下一篇: 2022年10月deepin 20.7.