黑馬程序員Maven全套教程,maven項(xiàng)目管理從基礎(chǔ)到高級,Java項(xiàng)目開發(fā)必

一、Maven項(xiàng)目結(jié)構(gòu)
pom.xml
------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<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">
??<modelVersion>4.0.0</modelVersion>
??<groupId>com</groupId>
??<artifactId>projext-java</artifactId>
??<version>1.0</version>
??<packaging>jar</packaging>
??<dependencies>
????<dependency>
??????<groupId>junit</groupId>
??????<artifactId>junit</artifactId>
??????<version>4.12</version>
??????<optional>true</optional>
????</dependency>
??</dependencies>
</project>
----------------------------------------------------------------------
二、Maven項(xiàng)目構(gòu)建
mvn compile #下載插件到本地Maven創(chuàng)庫,編譯代碼(第一次編譯會(huì)多一個(gè)文件夾

clean #清理
test #測試,日志報(bào)告 ./target/surefire-reports/
package #打包源文件為 .jar。執(zhí)行以上命令。
install #安裝到本地的Maven倉庫,
三、Maven插件創(chuàng)建工程
●創(chuàng)建工程(在空目錄創(chuàng)建工程)
mvn archetype: generate
-DgroupId={project-packaging}
-Dartifact Id=(project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
●創(chuàng)建java工程(缺少resources文件夾)
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
●創(chuàng)建web工程(缺少java文件夾)
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
四、依賴管理
1.依賴傳遞
<!-- 依賴傳遞 1.路徑優(yōu)先,就近原則 2.聲明優(yōu)先,在相同層級被依賴時(shí),先配置的生效 3.特殊優(yōu)先,同級配置相同資源的版本,后置覆蓋優(yōu)先(依賴重復(fù)但是版本不同時(shí) 對子類不顯示,不繼承--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <!-- 對子類不顯示,不繼承--> <optional>true</optional> <scope>test</scope> </dependency> </dependencies>
2.排除依賴
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <!-- 對子類不顯示,不繼承--> <optional>true</optional> <scope>test</scope> <!-- 主動(dòng)排除依賴的資源--> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
3.依賴范圍
<!-- 依賴范圍 1.main文件夾范圍 2,test測試程序范圍 3.package指令范圍 依賴范圍模式 1.compile ( 1,2,3 例如:log4j 2.test ( 2 例如:junit 3.provided( 1,2 例如:servlet-api 服務(wù)器內(nèi)置,打包會(huì)沖突 4.runtime ( 3 例如:jdbc --> <scope>test</scope>
4.依賴范圍傳遞性
<!-- 依賴范圍的傳遞性 1.compile,runtime可傳遞 2.test,provided不可傳遞 -->