1、maven介紹:
?
2、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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.google</groupId><artifactId>aibaiyang</artifactId><version>0.0.1-SNAPSHOT</version><name>aibaiyang</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
?
代碼第一行是XML頭,指定了改xml的版本和編碼格式。緊接著是project元素,project元素是所有pom.xml的根元素,它聲明了一些POM相關的命名空間及xsd元素。
modelVersion:指定了當前POM模型的版本,對于maven2以及maven3來說,它只能是4.0.0。
groupId、artifactId、version:這三個元素定義了一個項目的基本坐標,groupId定義了項目屬于哪個組,例如google公司的myapp項目,那么groupId就應該是com.google.myapp;artifactId定義了Maven項目中組的唯一id,例如myapp-domain,myapp-serveice,myapp-web。
version:項目當前的版本號,0.0.1-SNAPSHOT是該項目的版本號。
name:聲明了一個對于用戶更為友好的項目名稱,以方便信息交流,不是必須的。
?
3、坐標和依賴:
groupId:
artifactId:該元素定義實際項目中的一個Maven項目(模塊),推薦的做法是使用實際的項目名稱作為artifactId的前綴。這樣做的好處是方便尋找實際的構件,使用實際的項目名稱作為前綴之后,就能方便從一個lib文件夾中找到某個項目的一組構件。
version:該元素定義了Maven項目當前所處的版本。
packaging :該元素定義了Maven項目的打包方式,打包方式與所生成的構件的文件擴展名相對應。
?
3.1、依賴配置:
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>RELEASE</version><type>jar</type><scope>runtime</scope><optional>false</optional><exclusions><exclusion> </exclusion></exclusions></dependency></dependencies>
groupId、artifactId、version:依賴坐標
type:依賴類型,對應項目坐標定義的packaging。大部分情況下該元素不必聲明,其默認值為jar
socpe:依賴范圍
optional:標記依賴是否可選
exclusions:用來排除傳遞性依賴
?
3.2、依賴范圍:
compile:編譯依賴氛圍。沒有指定,就會默認使用該依賴范圍。
test:測試依賴范圍。
provided:已提供依賴范圍,編譯和測試有效,但在運行時無效。
runtime:運行時依賴范圍。編譯無效,測試和運行時有效。
system:系統依賴范圍,和provided依賴范圍一致。
import:導入依賴范圍。
?
3.3、傳遞性依賴:
?
?
?
參考此文檔