運(yùn)行環(huán)境
- Maven:3.6.0
- Eclipse:4.10.0
- jdk版本:1.8
- 操作系統(tǒng):windows10
概念
Maven采用POM(project object model)配置項(xiàng)目
安裝
- Maven依賴于jdk
- 安裝包解壓縮即可
- bin目錄添加到PATH環(huán)境變量中
- 命令行執(zhí)行
mvn -v
驗(yàn)證安裝成功
創(chuàng)建(create)項(xiàng)目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- archetype為插件快集,用來(lái)根據(jù)模板生成項(xiàng)目的目錄結(jié)構(gòu)
- groupId對(duì)應(yīng)源代碼包名
- artifactId對(duì)應(yīng)項(xiàng)目根目錄文件名
- archetypeArtifactId對(duì)應(yīng)采用的目錄模板
構(gòu)建(build)項(xiàng)目
構(gòu)建
mvn package
- package是一個(gè)階段火的,Maven會(huì)執(zhí)行從第一個(gè)階段直到指定階段的全部過(guò)程。
- 階段屬于生命周期,Maven的生命周期包括clean、default和site。
- default除了package階段,還包括compile、install叭爱、deploy等。install安裝到本地倉(cāng)庫(kù)漱病,deploy發(fā)布到遠(yuǎn)端倉(cāng)庫(kù)买雾。
執(zhí)行package后,Maven會(huì)將生成的jar包放到默認(rèn)的target目錄下杨帽。由于本機(jī)沒(méi)有配置JAVA_HOME環(huán)境變量漓穿,出現(xiàn)了"no compiler is provided"的錯(cuò)誤,添加配置后構(gòu)建成功注盈。
運(yùn)行測(cè)試
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
由于本機(jī)沒(méi)有配置classpath環(huán)境變量晃危,出現(xiàn)了"找不到或無(wú)法加載主類"的錯(cuò)誤,添加配置后運(yùn)行成功。
添加依賴包
在pom.xml的dependencies元素下新增dependency子元素
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope><!--scope默認(rèn)為compile-->
</dependency>
</dependencies>
如何指定版本號(hào)范圍:方括號(hào)表示閉區(qū)間僚饭,圓括號(hào)表示開(kāi)區(qū)間
- [1.0, 2.0]表示1.0<=version<=1.2
- (, 1.5]表示version<=1.5
在不確定依賴包的groupId和artifactId時(shí)可以先去repository提供的web頁(yè)面查詢震叮,比如說(shuō)可以用mvn repository
添加資源
默認(rèn)放在${basedir}/src/main/resources目錄,資源會(huì)被一同打包到j(luò)ar文件
如何改造已有項(xiàng)目為Maven項(xiàng)目
- 創(chuàng)建pom.xml鳍鸵,修改對(duì)應(yīng)信息
- 如果源代碼所在目錄不符合Maven默認(rèn)的目錄結(jié)構(gòu)苇瓣,可以增加或修改如下配置
<build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
</build>
- 如果資源所在目錄不符合Maven默認(rèn)的目錄結(jié)構(gòu),可以增加或修改如下配置
<build>
<resources>
<resource>
<targetPath>META-INF</targetPath>
<directory>${basedir}/src</directory>
<includes>
<include></include>
</includes>
<excludes>
<exclude></exclude>
</exculdes>
</resource>
</resources>
</build>
ide集成
eclipse插件m2eclipse
在eclipse的4.4以上的版本內(nèi)置了對(duì)maven的支持偿乖,所以可以不用自己安裝插件击罪。默認(rèn)的插件使用內(nèi)置的Maven,如果想要改成使用自己安裝的Maven贪薪,可以通過(guò)修改Window->Preference->Maven中的以下配置
- Installations添加Maven運(yùn)行時(shí)
- User Settings修改配置文件
- Archetypes修改目錄結(jié)構(gòu)模板的源媳禁,如果默認(rèn)的源速度太慢的話可以考慮修改,甚至可以將archetype-catalog.xml文件存儲(chǔ)在本地
配置修改完成后画切,在新建項(xiàng)目的時(shí)候選擇Maven Project即可竣稽。如果項(xiàng)目已經(jīng)存在,可以右鍵項(xiàng)目Configure->Convert to Maven Project將其轉(zhuǎn)換成Maven項(xiàng)目槽唾。如果編譯時(shí)出現(xiàn)以下錯(cuò)誤信息:
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
檢查Window->Preference->Java->Installed JREs是否是jdk下的jre丧枪。
依賴包源碼
- eclipse環(huán)境下光涂,可以右鍵jar包庞萍,選擇Maven->Download Sources,此時(shí)源碼會(huì)直接關(guān)聯(lián)到j(luò)ar包
- cmd環(huán)境下忘闻,切換到項(xiàng)目根目錄后執(zhí)行
mvn dependency:sources
與Ant的區(qū)別
- Maven內(nèi)置了更多的隱式規(guī)則钝计,內(nèi)置了軟件構(gòu)建的生命周期
以上兩點(diǎn)使得Maven知道如何在默認(rèn)情況下完成任務(wù),只要你告訴它做什么齐佳;而Ant需要你告訴它怎么做 - Maven有依賴管理和倉(cāng)庫(kù)管理私恬,Ant沒(méi)有