Java基礎(chǔ)-Maven淺析01
什么是Maven?
在Java開發(fā)過(guò)程中,為了實(shí)現(xiàn)功能,我們往往要引用大量外部的庫(kù)與框架,如mybatis、mysql-connector.jar, Springboot等待。管理這些外部庫(kù)與框架,是一件非常讓人頭疼的事情,而Maven是一個(gè)構(gòu)建自動(dòng)化與項(xiàng)目管理的工具,它簡(jiǎn)化了我們編譯、運(yùn)行、打包步驟,讓開發(fā)人員更關(guān)注于編寫代碼而不是處理一些復(fù)雜的構(gòu)建腳本。
Maven的生命周期

上圖中,是我們IDEA工具中常見的生命周期,它實(shí)際是可以劃分成3大塊(clean、default、site)
clean生命周期:
清理上一次構(gòu)建信息
default生命周期
validate
: 校驗(yàn)項(xiàng)目的結(jié)構(gòu)與配置文件compile
: .java文件編譯成.class,自動(dòng)下載依賴的jar包test
: 單元測(cè)試跑起來(lái)package
: 項(xiàng)目打成jar包verify
: 對(duì)集成測(cè)試的結(jié)果進(jìn)行檢查,以保證質(zhì)量達(dá)標(biāo)install
: 將jar包放到本地的maven倉(cāng)庫(kù)deploy
: 將本地的工程包推送到遠(yuǎn)程服務(wù)器
site生命周期
將項(xiàng)目中的文檔、README文件、API文檔等信息提取出來(lái),并將其轉(zhuǎn)換為HTML、PDF等格式的文檔,以便用戶查看和下載
Maven工程創(chuàng)建
groupId:項(xiàng)目組或者組織的唯一標(biāo)識(shí),如com.aliyun.schedulerx
artifactId:項(xiàng)目或者模塊的名字
idea創(chuàng)建

mvn命令創(chuàng)建:
mvn archetype:generate -DgroupId=com.lazy.java -DartifactId=hello -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0
項(xiàng)目結(jié)構(gòu):
maven定義了嚴(yán)格的項(xiàng)目文件格式,不按照這個(gè)文件格式,會(huì)導(dǎo)致項(xiàng)目編譯部署出現(xiàn)問(wèn)題
src/main/java –存放項(xiàng)目的.java文件src/main/resources –存放項(xiàng)目資源文件。比方spring,hibernate配置文件src/test/java –存放全部測(cè)試.java文件,比方JUnit測(cè)試類src/test/resources ---測(cè)試資源文件target ---項(xiàng)目輸出位置,編譯完畢后的東西放到這里面pom.xml

Pom文件格式

父子模塊pom配置

父模塊POM配置
<!-- 配置子模塊-->
<modules>
? ? <module>customercore-api</module>
? ? <module>customercore-service</module>
</modules>
<!--環(huán)境-->
<profiles>
? ? <profile>
? ? ? ? <id>dev</id>
? ? ? ? <properties>
? ? ? ? ? ? <envro>dev</envro>
? ? ? ? </properties>
? ? ? ? <activation>
? ? ? ? ? ? <activeByDefault>true</activeByDefault>
? ? ? ? </activation>
? ? </profile>
? ? <profile>
? ? ? ? <id>prod</id>
? ? ? ? <properties>
? ? ? ? ? ? <envro>prod</envro>
? ? ? ? </properties>
? ? </profile>
</profiles>
<!--父模塊jar包版本統(tǒng)一控制-->
<dependencyManagement>
? ? ? ? <dependencies>
? ? ? ? ? ? <dependency>
? ? ? ? ? ? ? ? <groupId>com.duobaoyu.systemcenter</groupId>
? ? ? ? ? ? ? ? <artifactId>system-center-api</artifactId>
? ? ? ? ? ? ? ? <version>1.0.${envro}-SNAPSHOT</version>
? ? ? ? ? ? </dependency>
? ? ? ? </dependencies>
</dependencyManagement>
子工程pom配置

