Apache Maven,是一個項目管理及自動構建的工具,有Apache軟體基金會所提供。 Maven是用Java語言編寫的,是一款可以跨平臺的軟體。 Maven解決了軟體構建的兩方面問題:一是軟體是如何構建的,二是軟體的依賴關係。 Maven是以基於插件的架構構建的,這使其能夠使用任何能用標準輸入... ...
Maven基礎入門
一、maven是什麼
- Apache Maven,是一個項目管理及自動構建的工具,有Apache軟體基金會所提供。
- Maven是用Java語言編寫的,是一款可以跨平臺的軟體。
- Maven解決了軟體構建的兩方面問題:一是軟體是如何構建的,二是軟體的依賴關係。
- Maven是以基於插件的架構構建的,這使其能夠使用任何能用標準輸入控制的應用程式。
官網頁面:Maven – Welcome to Apache Maven
下載地址:https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip
依賴管理倉庫地址:Maven Repository: Search/Browse/Explore (mvnrepository.com)
二、怎麼使用
1.下載
2.系統環境變數配置
3.修改配置
① 修改本地倉庫
② 修改鏡像資源
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
三、入門
1.坐標
使用三個“向量”在“Maven倉庫”中定位到唯一的一個“jar包”
- groupId:公司或組織的 id
- groupId:com.jeegole.maven
- artifactId:一個項目或者是項目中的一個模塊的 id
- artifactId:text-01-maven
- version:版本號
- version:1.0-SNAPSHOT
例如:
坐標
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
對應Maven倉庫位置
Maven本地倉庫根目錄\javax.servlet\servlet-api\2.5\servlet-api-2.5.jar
四、Maven相關命令使用
1.基礎命令
基礎命令 | 作用 |
---|---|
mvn compile | 主程式編譯 |
mvn test-compile | 測試程式編譯 |
mvn install | 構建 jar 包存入 Maven 本地倉庫 |
mvn clean | 刪除 target 目錄 |
mvn package | 打包的結果jar 包,存放的目錄:target |
mvn test | 測試命令 |
2.依賴生效範圍
① compile 和 test 對比
main目錄(空 間) | test目錄(空 間) | 開發過程(時 間) | 部署到伺服器(時 間) | |
---|---|---|---|---|
compile | 有效 | 有效 | 有效 | 有效 |
test | 無效 | 有效 | 有效 | 無效 |
② compile 和 provided 對比
main目錄(空 間) | test目錄(空 間) | 開發過程(時 間) | 部署到伺服器(時 間) | |
---|---|---|---|---|
compile | 有效 | 有效 | 有效 | 有效 |
provided | 有效 | 有效 | 有效 | 無效 |
③ 結論
compile :預設級別,測試環境、開發環境、生產環境都有效,擁有最大許可權。
test:測試環境有效,測試過程中使用的 jar 包,以 test 範圍依賴進來。比如 junit。
provided:開發環境有效。
3.依賴的傳遞性
在 A 依賴 B,B 依賴 C 的前提下,C 是否能夠傳遞到 A,取決於 B 依賴 C 時使用的依賴範圍。
- B 依賴 C 時使用 compile 範圍:可以傳遞
- B 依賴 C 時使用 test 或 provided 範圍:不能傳遞,所以需要這樣的 jar 包時,就必須在需要的地 方明確配置依賴才可以。
五、idea中使用
1.創建工程
2.pom.xml
3.使用方式
4.打斷點方式
啟動類中使用Maven啟動,就可以使用debug的方式啟動
5.註意部分
① 項目如果報ClassNotFound異常:
.last文件是下載失敗的文件,但是它即使失敗,也會占據jar包的位置,導致maven不能重新下載,就會導致運行異常。
俗話稱之為:占著茅肯不拉屎