Maven与IDEA结合
轉(zhuǎn)自:https://blog.csdn.net/zzpzheng/article/details/49474671
1. 什么是 Maven,為什么要使用 Maven 而不是 Ant
Maven簡(jiǎn)單來說是一個(gè)項(xiàng)目管理工具,被認(rèn)為是Ant的替代品或者繼任者。事實(shí)上Maven的功能要遠(yuǎn)遠(yuǎn)超出Ant,它不僅僅提供編譯的腳本,更是在整 個(gè)項(xiàng)目周期中提供測(cè)試,發(fā)布,文檔生成等功能,并且有著獨(dú)特的依賴性管理方法。但是強(qiáng)大的功能的代價(jià)就是復(fù)雜的使用方法,第一次使用Maven往往需要將 近半個(gè)小時(shí)的時(shí)間(國(guó)內(nèi)網(wǎng)速)來下載一個(gè)本地的依賴庫(kù),這無疑會(huì)使很多開發(fā)人員“知難而退”。雖然廣受詬病,一個(gè)不爭(zhēng)的事實(shí)就是Maven逐漸代替了 Ant,使用Maven也成了Java開發(fā)人員的一個(gè)必要技能。
2. IntelliJ IDEA 與 Eclipse
在Java的世界里,Eclipse毋庸置疑是IDE中的王者,IntelliJ IDEA和NetBeans都只能生活在Eclipse的光環(huán)下。Eclipse的強(qiáng)大已經(jīng)不用我多說了,但其實(shí)IntelliJ IDEA也是一個(gè)相當(dāng)優(yōu)秀的IDE,尤其體現(xiàn)在它的智能上。它的一個(gè)針對(duì).Net的Clone產(chǎn)品ReSharper已經(jīng)被越來越多的C#開發(fā)者所接受。 IntelliJ IDEA提供了大量的智能規(guī)則來協(xié)助開發(fā)者,類似代碼補(bǔ)全,用法的轉(zhuǎn)換,格式的提示等等,當(dāng)你習(xí)慣以后,你就會(huì)對(duì)那個(gè)小燈泡愛不釋手。
3. 選擇 Maven + IntelliJ IDEA 的理由
之所以要選擇IntelliJ IDEA,是因?yàn)镸aven+Eclipse實(shí)在太難用了。Eclipse有兩個(gè)Maven插件 m2eclipse 和 Eclipse IAM。但是由于Eclipse和Maven設(shè)計(jì)上的矛盾,這兩個(gè)插件可能都達(dá)不到你想要的效果。m2eclipse 會(huì)把你所有類型的項(xiàng)目都視為Maven類型項(xiàng)目,這對(duì)于一個(gè)單純的Java項(xiàng)目或許可以,對(duì)于一個(gè)JEE或者WEB項(xiàng)目都是一場(chǎng)災(zāi)難。Eclipse IAM 并不會(huì)改變你的項(xiàng)目類型,但是他提供的功能也就僅僅限于編輯和運(yùn)行POM文件了,甚至連依賴性都管理不了。相比之下,如果你非要用Eclipse的話我還 是推薦你使用Eclipse IAM。Eclipse想要完美的支持Maven恐怕需要在底層設(shè)計(jì)上做一些改變,無論是代碼規(guī)范,項(xiàng)目結(jié)構(gòu)規(guī)范和依賴性管理上,都有著不可調(diào)和的矛盾。 顯然,在這方面IntelliJ IDEA做的要好的多,以至于你很難說出對(duì)它的不滿。
4. Maven + IntelliJ IDEA 的優(yōu)勢(shì)
一切都是Module:
????? IntelliJ IDEA借鑒的Maven的概念,不在采取Eclipse里Project的概念,一切都是Module。無論是否使用Maven,你的項(xiàng)目都是一個(gè)獨(dú)立 的Module。并且你可以混搭使用Maven Module和普通的Java Module,兩者可以和諧共存。
支持Multi-module:
????? 可以說Maven的項(xiàng)目結(jié)構(gòu)設(shè)計(jì)是非常嚴(yán)格的,現(xiàn)實(shí)應(yīng)用中你必須用到Parent-Child的模式。Eclipse由于不支持在一個(gè)Project上建 立Sub-Project,因此無論如何目前都不能實(shí)現(xiàn)。IntelliJ IDEA可以完美的實(shí)現(xiàn)這個(gè)設(shè)計(jì),并且無論是Module屬性里,還是彼此的依賴性上都不會(huì)出現(xiàn)問題。
更方便的生命周期操作:
????? 比起Eclipse通通放進(jìn)右鍵菜單的行為,IntelliJ IDEA有著單獨(dú)的窗口可以完成Maven的操作。你可以針對(duì)不同Module進(jìn)行 Clean Compile Package Install等操作,各個(gè)Plug-in的操作也一清二楚。
完美的依賴性管理:
????? 由于Maven會(huì)把所有依賴的包放在本機(jī)的一個(gè)目錄下,所以實(shí)際上是脫離Project本身存在的。IntelliJ IDEA引入了一個(gè)External Library的概念,所有的Maven依賴性都會(huì)放在這里,和項(xiàng)目自帶的庫(kù)區(qū)分開。并且Module之間會(huì)智能的判斷,你不需要Maven Install來進(jìn)行引用代碼的更新。
動(dòng)態(tài)更新:
????? 每當(dāng)Maven相關(guān)的設(shè)置更改時(shí),例如修改了pom的依賴性,添加刪除Module,IntelliJ IDEA會(huì)提示你進(jìn)行更新。這種更新實(shí)際上就是運(yùn)行了Maven,所以你不許要手動(dòng)運(yùn)行Maven Compile來進(jìn)行更新,也不會(huì)像Eclipse里遇到莫名其妙的問題。
5. Maven 安裝
到http://maven.apache.org/download.html 下載最新的Maven版本,我下載的版本為最新的apache-maven-3.0.4。推薦使用最新的Maven 3,因?yàn)楸纫郧暗腗aven 2性能更好,而且完全兼容Maven 2。
下載好以后,解壓到一個(gè)目錄,我的目錄為 D:\apache-maven-3.0.4,接著配置Maven環(huán)境變量M2_HOME為你解壓的目錄,如下圖新建M2_HOME變量并追加到Path后面:
如果要在CMD控制臺(tái)運(yùn)行Maven命令的話,還需要配置Jdk環(huán)境變量,因?yàn)槲医酉聛淼牟僮鞫际腔贗ntelliJ IDEA,所以就不用配置JDK環(huán)境變量。
6. Maven 與IntelliJ IDEA完美使用(基于IntelliJ IDEA 12)
打開IntelliJ IDEA,新建一個(gè)Maven項(xiàng)目,如下圖,項(xiàng)目名稱為mymaven
?
選擇Maven模版
創(chuàng)建過程中,配置Maven主目錄
?
創(chuàng)建好后的目錄結(jié)構(gòu)如下圖,IDEA創(chuàng)建了src/main/resources(自動(dòng)創(chuàng)建)、src/main/java(手動(dòng)創(chuàng)建)、src/main/test(手動(dòng)創(chuàng)建)、以及pom.xml文件(自動(dòng)創(chuàng)建)
按照Maven約定,項(xiàng)目的主目錄位于src/main/resources、src/main/java中,測(cè)試目錄位于src/main/test 中,所以我們?cè)谧罱K打包項(xiàng)目的時(shí)候,只包含主目錄代碼,不會(huì)包含測(cè)試目錄里的代碼,而測(cè)試目錄里的代碼只會(huì)在測(cè)試時(shí)候用到。
最后pom.xml這個(gè)文件是我們Maven項(xiàng)目的核心文件,POM(Project Object Model,項(xiàng)目對(duì)象模型)定義了項(xiàng)目的基本信息,用于描述項(xiàng)目如何構(gòu)建,聲明項(xiàng)目依賴。
project:是xml文件的根元素,我們主要關(guān)心根元素下的子元素?
modelVersion:定義了當(dāng)前POM模型的版本,Maven 2 或Maven 3 只能是4.0.0?
groupId:定義了項(xiàng)目屬于哪個(gè)組,一般來說這個(gè)網(wǎng)網(wǎng)和公司或組織關(guān)聯(lián),比如說,你所在的公司為mycom.那就應(yīng)該定義為com.mycom.mymaven,mymaven為項(xiàng)目名稱?
artifactId:定 義了當(dāng)前Maven項(xiàng)目在組中的唯一id,例如HelloMaven這個(gè)項(xiàng)目,我則把他定義為hello-maven,還例如spring項(xiàng)目,他的 groupId為org.springframework,對(duì)于content項(xiàng)目來說artifactId則為spring-content,web項(xiàng) 目則為spring-web
最后我們使用IntelliJ IDEA來用Maven編譯我們的代碼,打開Maven Projects菜單,如圖,選中clean、compile并右鍵點(diǎn)擊Run 'hello-maven[clean,compile]'按鈕即可。
根據(jù)輸出結(jié)果我們看到,clean命令讓Maven先清理target目錄,Maven一般認(rèn)為項(xiàng)目的輸出目錄為target,然后執(zhí)行resource任務(wù),現(xiàn)在為定義項(xiàng)目資源,所以暫時(shí)略過,最后執(zhí)行編譯任務(wù)!?
轉(zhuǎn)載于:https://www.cnblogs.com/sharpest/p/8491991.html
總結(jié)
以上是生活随笔為你收集整理的Maven与IDEA结合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “共享工程师”?看锐捷“网络青年”如何携
- 下一篇: CDN预热与刷新在促销活动中的应用