易操作的Maven教程

引言

很多公司里的web項目是都是用maven管理纲刀,maven可以非常方便的管理項目的各種依賴拍柒,確實很好用巾表,但是對于剛開始使用的初學(xué)者循头,網(wǎng)上的很多教程基本上跟著操作兩步就會出問題,可能是因為細(xì)節(jié)沒有說清楚或者版本的問題爆捞,給學(xué)習(xí)帶來很多困難奉瘤,于是根據(jù)我這幾天的嘗試和學(xué)習(xí),想自己寫了一篇教程煮甥,讓初學(xué)者入門時少走彎路盗温,本文中maven的默認(rèn)版本是3.1.1,操作系統(tǒng)是windows成肘,本文中只介紹了maven對于普通程序員來說比較重要和常用的部分卖局,至于其他很多東西像nexus服務(wù)器的配置等,我也不是很懂艇劫,因此本文中就沒有寫吼驶,所以并不適合有經(jīng)驗的程序員閱讀

使用maven前的準(zhǔn)備


1.配置環(huán)境變量

首先要配置java環(huán)境變量,這個就不多說了店煞,然后要配置maven的環(huán)境變量蟹演,本文中將maven解壓后放在了如圖所示的路徑下:

本文中maven的路徑

然后和配置java環(huán)境變量一樣,然后在系統(tǒng)變量中添加M2_HOME變量顷蟀,值為
D:\Program Files\Java\apache-maven-3.1.1
然后在path變量的末尾添加
%M2_HOME%\bin;
然后打開cmd酒请,輸入mvn -version,打印出如圖所示內(nèi)容則配置成功
配置成功

2.修改settings.xml
打開maven所在目錄進(jìn)入conf文件夾,會看到里面有一個settings.xml文件鸣个,這個是maven的全局配置文件羞反,打開后找到<mirrors>,在<mirrors></mirrors> 中添加如下內(nèi)容:

    <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
    </mirror>

如圖所示

配置阿里云鏡像

因為maven的所有功能都是基于插件的囤萤,當(dāng)需要用到某一個插件時就會自動到服務(wù)器去下載昼窗,包括maven項目需要的各種依賴包,也都是去服務(wù)器下載的涛舍,中央服務(wù)器上保存了幾乎所有常用的依賴包和插件澄惊,但是在國內(nèi)因為墻的原因,每當(dāng)maven需要從遠(yuǎn)程倉庫下載插件或者依賴包時都會速度非常緩慢甚至下載失敗富雅,這一步其實就是給maven配置了一個maven遠(yuǎn)程倉庫的鏡像掸驱,阿里云的鏡像親測速度挺快,所以配置了這個没佑,網(wǎng)上還有人說開源中國也有一個maven的國內(nèi)鏡像毕贼,后來好像因為什么原因關(guān)閉,我試過了沒有用蛤奢,所以最終選擇阿里云的鏡像鬼癣。
如果公司里公司里有自己的倉庫(一般是nexus服務(wù)器)的話陶贼,最好直接找同事要一份setting.xml然后覆蓋掉C:\Users\Administrator(當(dāng)前使用電腦的賬戶名)\.m2\settings.xml,因為里面可能還配置了公司自己的nexus服務(wù)器扣溺,服務(wù)器里可能存儲了一些公司自己開發(fā)的依賴包骇窍,這些依賴包是不可能從中央倉庫或其國內(nèi)鏡像中下載到的。
當(dāng)maven從網(wǎng)絡(luò)上下載下來依賴包之后會放在本地倉庫中锥余,本地倉庫的默認(rèn)地址為
C:\Users\Administrator(當(dāng)前使用電腦的賬戶名)\.m2\repository
如果不想放在這里也可以在settings.xml的根標(biāo)簽中配置
<localRepository>目錄</localRepository>
這樣下載的依賴包和插件就會放在配置的目錄中了
本文使用maven的默認(rèn)地址

創(chuàng)建一個簡單的maven項目


在D盤下新建一個maven_test文件夾用于測試學(xué)習(xí)
進(jìn)入cmd,使用cd命令進(jìn)入目錄D:\maven_test 痢掠,即輸入命令:
cd /d D:\maven_test
驱犹,然后輸入命令:
mvn archetype:generate
第一次輸入這個命令,會先去倉庫下載一些東西到本地足画,然后會讓你選擇原型雄驹,此時選擇7,即
maven-archetype-quickstart
之后會讓你依次輸入groupId,artifactId,version,package先按照如下圖所示輸入淹辞,以后再解釋其含義:

新建firstmaven

最后再確認(rèn)一下輸入的這些屬性医舆,一個最簡單的maven項目就新建好了
訪問目錄D:\maven_test 發(fā)現(xiàn)出現(xiàn)了一個firstmaven文件夾

注:有的博客中會告訴你用mvn archetype:create 創(chuàng)建一個最簡單的maven項目,但是嘗試了之后會發(fā)現(xiàn)象缀,在高版本的maven中會出現(xiàn)ERROR蔬将,網(wǎng)上搜索發(fā)現(xiàn)有的博文說在maven3.0.5以上的版中舍棄了用create創(chuàng)建項目

maven項目結(jié)構(gòu)


一個maven項目由groupId,artifactId和version(簡稱GAV)唯一確定,當(dāng)別人的項目里需要引入你寫的包作為依賴時央星,你只需要將這三個屬性的值告訴他就可以了霞怀,有的博客里將其成為maven項目的坐標(biāo),我覺得很形象莉给,就沿用了這一叫法毙石。
點開剛剛新出現(xiàn)的firstmaven 文件夾,可以點開看看里面的目錄層次颓遏,所有maven項目的目錄結(jié)構(gòu)都是統(tǒng)一的徐矩,如下圖是標(biāo)準(zhǔn)的maven目錄結(jié)構(gòu):

            ├───src
            │   ├───main
            │   │   └───java
            │   │   └───resources
            │   │  
            │   │     
            │   └───test
            │       └───java
            │       
            └───target

其中,src/main/resources約定用于存放xml等配置文件叁幢,src/main/java約定用于存放源代碼滤灯,src/main/test用于存放單元測試代碼,src/target用于存放編譯遥皂、打包后的輸出文件力喷,剛剛創(chuàng)建的這個項目缺少一個resources文件夾,需要我們自行創(chuàng)建一下演训,除此之外還缺少一個target目錄弟孟,這個不用擔(dān)心,在使用maven進(jìn)行編譯打包時样悟,target會被自動創(chuàng)建的拂募。
在項目目錄下還會看到一個pom.xml文件庭猩,pom是Project Object Model(項目對象模型)的簡稱,通過pom.xml我們可以給項目進(jìn)行一些配置陈症。

常用的pom標(biāo)簽


點開pom.xml文件蔼水,發(fā)現(xiàn)根元素是<project></project>,groupId,artifactId和version是剛剛我們創(chuàng)建項目時填入的項目的坐標(biāo);
url是指開發(fā)這個項目的組織的官方網(wǎng)站录肯,目前沒有什么用趴腋;
<packaging>jar</packaging>表示項目將會被打包成jar文件,除了jar论咏,還可以配置成war或者pom优炬,war表示將會打包成war文件,pom表示這是一個多模塊項目的父項目厅贪,講到多模塊項目時會再具體說明蠢护;
比較重要的是<dependencies></dependencies> ,項目的依賴包全都是在這里配置的,項目默認(rèn)配置了對junit的依賴养涮,如果還需要其他依賴的話請瀏覽http://mvnrepository.com 葵硕,查找需要的依賴,點進(jìn)去贯吓,網(wǎng)頁會提供如下xml代碼(以Spring為例):

添加spring代碼

將該代碼添加到<dependencies></dependencies> 當(dāng)中即可完成依賴添加懈凹,很明顯比以前手動去網(wǎng)上下載然后添加依賴的方式要方便許多.
除此之外還要很多pom標(biāo)簽,我們等接下來用到了再進(jìn)行講解

maven創(chuàng)建web項目


接下來看看如何用maven創(chuàng)建javaweb項目宣决,打開命令行進(jìn)入D:\maven_test 蘸劈,運(yùn)行命令
mvn archetype:generate
然后會提示讓你輸入要選擇的原型,這里輸入10尊沸,即webapp類型威沫,如圖:

創(chuàng)建webapp

然后的步驟就和簡單maven項目的創(chuàng)建一樣了,這里我是這么命名的:
webapp坐標(biāo)

然后打開目錄D:\maven_test 發(fā)現(xiàn)多了一個webapp文件夾洼专,打開文件夾看一下目錄結(jié)構(gòu)棒掠,標(biāo)準(zhǔn)的maven web項目的目錄結(jié)構(gòu)如下:

├───src
│   ├───main
│   │   └───java
│   │   └───resources
│   │   └───webapp
│   │     
│   └───test
│       └───java
│          
└───target

自動生成的項目在main目錄下還缺少一個java目錄,我們新建一下屁商。
不要著急將這個項目導(dǎo)入IDE進(jìn)行編碼烟很,要先對這個項目進(jìn)行一些改造,否則你在編碼時將會面臨一些困擾蜡镶,下面我來說一下這個自動生成項目存在的問題:
1.該項目不支持el表達(dá)式雾袱,所有的el表達(dá)式都會在頁面上直接輸出;
2.如果將項目導(dǎo)入IDE中官还,編寫jsp或者servlet代碼時沒有任何提示芹橡;

如果有興趣的話可以親自去試一試,總之我在初學(xué)maven時感到很困擾望伦,經(jīng)過嘗試林说,按如下步驟可以把改項目改造成正常的web項目:
1.打開該項目的web.xml文件煎殷,會發(fā)現(xiàn)如下內(nèi)容:


老版本web.xml

這似乎是Servlet2.x版本的web.xml,那個時候還沒有el表達(dá)式腿箩,所以頁面中的el表達(dá)式當(dāng)然不會被解析豪直,我們將其內(nèi)容全部刪除,換成如下內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0"
         metadata-complete="true">
 
</web-app>

這個是支持el表達(dá)式的新版web.xml珠移,如果有興趣嘗試一下的話弓乙,會發(fā)現(xiàn)el表達(dá)式已經(jīng)可以被正確解析了

2.打開pom.xml,查看標(biāo)簽<dependencies></dependencies> 剑梳,發(fā)現(xiàn)雖然是web項目唆貌,但是maven引入的依賴仍然只有一個junit,沒有對于jsp和servlet的依賴垢乙,所以在IDE中編寫jsp或servlet時會沒有代碼提示
http://mvnrepository.com 搜索依賴包,復(fù)制粘貼代碼到<dependencies></dependencies> 中语卤,然后稍作修改追逮,例子如下:

    <!-- jsp API -->
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.1</version>
        <scope>provided</scope>
    </dependency>
    
    <!-- Servlet API -->
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

這里的dependency和之前不太一樣,要多一個<scope>provided</scope>粹舵,這個用來配置依賴的“范圍”钮孵,provided表示依賴僅僅在編譯范圍起作用,打包或者運(yùn)行時并不會被包含進(jìn)去眼滤,之所以這么配置是因為servlet和jsp的jar包在javaweb容器中已經(jīng)包含巴席,并不需要被打包進(jìn)去,僅僅是在編譯時需要诅需,其他常用的值包括:compile,runtime,test,system漾唉。compile是默認(rèn)值,如果不寫scope標(biāo)簽時就隱含是這個堰塌,編譯赵刑,運(yùn)行打包時都會包含,test表示僅僅在測試階段包含场刑,其他的并不是很常用般此,我也沒有用過,就不多說了牵现。
在做完這些之后铐懊,以后項目如果被導(dǎo)入IDE,在寫JSP或者Servlet時就會有提示了瞎疼。

maven自定義原型


在發(fā)現(xiàn)maven自帶的webapp原型很坑之后科乎,我們按照如上方法進(jìn)行了改造,但是每次這么改造還是挺繁瑣的丑慎,所以我們決定將自己改造過的webapp項目做成一個自己的原型喜喂,按照下面的步驟即可定義出自己的原型:
1.先打開cmd瓤摧,進(jìn)入到項目目錄下,即D:\maven_test\webapp
2.執(zhí)行命令:
mvn archetype:create-from-project
3.切換目錄至D:\maven_test\webapp\target\generated-sources\archetype 玉吁,即輸入命令:
cd target/generated-sources/archetype
4.輸入命令:
mvn install
然后就結(jié)束了照弥,就是這么簡單,進(jìn)入項目目錄看一下进副,發(fā)現(xiàn)多了一個target文件夾这揣,之前說過輸出文件都是輸出到target文件夾下的,target是maven項目的一個標(biāo)準(zhǔn)文件夾影斑,進(jìn)去看一下给赞,一直進(jìn)入到目錄
D:\maven_test\webapp\target\generated-sources\archetype 中,發(fā)現(xiàn)這里也有一個pom.xml文件夾矫户,打開這個文件看一下片迅,下面這三個值要記住了,它們就是自定義原型的坐標(biāo)皆辽,接下來要用到

自定義原型的pom

再次進(jìn)入cmd柑蛇,進(jìn)入目錄 D:\maven_test,然后輸入命令驱闷,切記-D后面不要加空格

mvn archetype:generate -DarchetypeGroupId=org.test.webapp -DarchetypeArtifactId=webapp-archetype -DarchetypeVersion=1.0

然后就會發(fā)現(xiàn)生成了一個符合剛才簡模板的項目耻台,其中的參數(shù)-DarchetypeGroupId,-DarchetypeArtifactId和-DarchetypeVersion的值就是剛才看到的項目原型的坐標(biāo)空另,也可以不在命令行中輸入原型坐標(biāo)盆耽,直接輸入mvn archetype:generate 然后你在選擇原型是會看到多出來了一個剛剛創(chuàng)建的web-archetype原型

Settings.xml


maven安裝好后會在兩個地方有settings.xml,一個是剛剛在配置倉庫鏡像時接觸過的在maven目錄下的conf中的settings.xml扼菠,這個是maven的全局配置文件摄杂,對本臺計算機(jī)的所以用戶有效;還有一個是在C:\Users\Administrator(當(dāng)前使用電腦的賬戶名)\.m2\ 目錄下的settings.xml娇豫,它只對當(dāng)前使用計算機(jī)的用戶有效匙姜,兩個settings.xml中可以配置的標(biāo)簽是相同的,對于普通程序員來說冯痢,我們只需要用到少量的幾個標(biāo)簽氮昧,比如之前說過的<mirrors></mirrors> ,所以本節(jié)就不單獨講解settings.xml的標(biāo)簽了浦楣,等到接下來的章節(jié)用到時再講袖肥。

maven項目的生命周期


我對生命周期的理解也不是很深入,就說一些工作中經(jīng)常用到的吧振劳。
maven生命周期有很多階段椎组,大家可以自行去網(wǎng)上搜索相關(guān)資料,但是目前我在工作中只用過clean,install和deploy历恐。
生命周期是專業(yè)術(shù)語的叫法寸癌,我更喜歡將其理解成maven的功能或者服務(wù)专筷,當(dāng)你在pom.xml所在目錄執(zhí)行類似與mvn clean, mvn installmvn deploy 生命周期命令時,命令就會完成相應(yīng)的功能蒸苇,下面我來簡單說一說這三個命令的功能
mvn clean 會清除target目錄及其所有內(nèi)容
mvn install 會將項目發(fā)布到本地代碼倉庫
mvn deploy 會將項目發(fā)布到所配置的遠(yuǎn)程倉庫當(dāng)中磷蛹,公司的項目一般是發(fā)布到公司自己的nexus服務(wù)器當(dāng)中,此時其他開發(fā)者就可以在引入你寫的項目進(jìn)行依賴

配置deploy發(fā)布的服務(wù)器位置

maven需要知道公司服務(wù)器的位置才能夠在deploy時將項目發(fā)布到服務(wù)器中溪烤,所以在deploy之前還需要在setting.xml和項目的pom中進(jìn)行一下配置味咳,不過如果你的settings.xml是找同事要的,項目又是從svn上拷下來的檬嘀,基本上都已經(jīng)配置好槽驶,所以對于普通程序員來說,基本上不需要自己配置鸳兽,只做了解即可掂铐,配置步驟如下:
1.setting.xml中的配置:
在settings.xml中配置nexus服務(wù)器,一般會配置兩個揍异,一個是用來存放項目的發(fā)布版本堡纬,一個用來存放快照(snapshot),發(fā)布版本一般是已經(jīng)穩(wěn)定了版本蒿秦,而快照一般是臨時存儲用的.
在settings.xml的根標(biāo)簽下添加<servers></servers> , 如下:

<servers>
   <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
   </server>
   <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
   </server>
</servers>

id可以任意填寫蛋济,但是最好能夠像如上代碼那樣標(biāo)識出發(fā)布版本的服務(wù)器和快照服務(wù)器棍鳖,<username><password> 分別是該nexus服務(wù)器的用戶名和密碼

  1. 項目pom中的配置:
    在根標(biāo)簽下加入如下的<distributionManagement></distributionManagement>
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://192.168.1.250:8084/nexus/content/repositories/releases/</url>
    </repository>

    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>http://192.168.1.250:8084/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

其中配置了一個repository和snapshotRepository,其中repository是用于存儲發(fā)布版本碗旅,snapshotRepository用于存儲快照渡处,所謂快照,所有version以"-SNAPSHOT"結(jié)尾的項目發(fā)布時都會被maven識別快照并發(fā)布到snapshotRepository.
其中的id標(biāo)簽就是你之前在settings.xml中配置的server的id祟辟,它表示你選擇了哪一個server.
url標(biāo)簽很顯然就是倉庫的地址医瘫,上面只是舉個例子,復(fù)制粘貼的時候記得改成自己的nexus服務(wù)器的地址.

這兩步便已完成了配置旧困,當(dāng)你deploy項目時醇份,項目就會出現(xiàn)在你指定的nexus服務(wù)器上。

maven多模塊項目創(chuàng)建


maven多模塊項目是用maven進(jìn)行項目管理的最佳實踐之一吼具,一般在javaweb項目中會將每一層(domain,dao,service,web)作為一個單獨的模塊僚纷,有時候一些通用的工具類可能會再形成一個模塊(util)。
下面開始動手操作:
打開命令行拗盒,先進(jìn)入我們的實驗?zāi)夸?D:\maven_test
按如下步驟操作:

  1. 輸入命令:
mvn archetype:generate -DgroupId=org.test.multimodule -DartifactId=multimodule -Dversion=1.0-SNAPSHOT

之前我們都是直接用mvn archetype:generate 創(chuàng)建項目的怖竭,直接用不帶參數(shù)的該命令時,會在創(chuàng)建項目時提示你輸入GAV(groupId, artifactId, version)陡蝇,在這里我們直接使用命令參數(shù)-DgroupId, -DartifactId, -Dversion指定GAV痊臭,在之后創(chuàng)建模塊時將會看見這么做的好處哮肚。選擇原型時直接按回車,選擇默認(rèn)的7號原型(quick-start)

  1. 打開剛剛創(chuàng)建的文件夾multimodule广匙,刪除src目錄允趟,在多模塊項目的父項目中是不放資源文件的,之后打開pom.xml艇潭,找到<packaging></packaging> 標(biāo)簽拼窥,發(fā)現(xiàn)標(biāo)簽內(nèi)寫的是jar,之前在講pom標(biāo)簽時提到過這個標(biāo)簽蹋凝,jar說明項目在打包階段會被打包成jar鲁纠,我們將其改為pom,如下:
    <packaging>pom</packaging>
    鳍寂,說明它是多模塊項目的父項目改含,如果不修改的話創(chuàng)建模塊時將會出錯。
    然后找到<dependencies></dependencies> 標(biāo)簽迄汛,將這個標(biāo)簽刪掉捍壤,父項目不需要依賴任何東西。
  2. 在命令行中使用cd命令進(jìn)入剛剛multimodule目錄鞍爱,將剛剛創(chuàng)建multimodule項目的命令復(fù)制一份鹃觉,僅僅修改-DartifactId參數(shù),得到如下幾個命令:
mvn archetype:generate -DgroupId=org.test.multimodule -DartifactId=multimodule-domain -Dversion=1.0-SNAPSHOT
mvn archetype:generate -DgroupId=org.test.multimodule -DartifactId=multimodule-dao -Dversion=1.0-SNAPSHOT
mvn archetype:generate -DgroupId=org.test.multimodule -DartifactId=multimodule-service -Dversion=1.0-SNAPSHOT
mvn archetype:generate -DgroupId=org.test.multimodule -DartifactId=multimodule-web -Dversion=1.0-SNAPSHOT

從-Dartifact參數(shù)中就可以看出這些模塊分別對應(yīng)的是domain, dao, service以及web層睹逃,至于原型的選擇盗扇,domain, dao, service只要選擇默認(rèn)的quick-start原型即可,web層則可以用我們之前創(chuàng)建的web-archetype原型沉填。
除此之外疗隶,還要打開各個模塊的pom.xml把根標(biāo)簽下直接子標(biāo)簽<groupId></groupId>, <version></version> ,應(yīng)為這兩個屬性已經(jīng)直接通過上面的<parent></parent> 標(biāo)簽從父項目中繼承翼闹,這里不需要重復(fù)斑鼻。

到此,多模塊項目的創(chuàng)建就完成了猎荠,我們來看一看項目發(fā)生了哪些變化坚弱。
首先打開父項目(即D:\maven_test\multimodule 目錄)的pom.xml,會發(fā)現(xiàn)多了如下的<modules></modules> 標(biāo)簽:

modules標(biāo)簽

這個表示了這個項目的各個模塊法牲,每個<module></module> 標(biāo)簽中寫的是模塊的artifactId
然后隨意打開一個模塊的pom.xml瞧瞧史汗,就以mutimodule-domain模塊為例吧,打開它(即D:\maven_test\multimodule\multimodule-domain 目錄下的)的pom.xml拒垃,發(fā)現(xiàn)它的GAV和一般的項目不太一樣停撞,如下:
parent標(biāo)簽

它通過<parent></parent> 標(biāo)簽繼承了父項目的GAV,也可以通過在pom.xml根標(biāo)簽下定義GAV來覆蓋掉它,這里模塊的<artifactId></artifactId> 就把<parent></parent> 中的artifactId給覆蓋掉了戈毒。

maven與IDE結(jié)合


maven可以和例如eclipse, IntelliJ等IDE進(jìn)行整合艰猬,IDE會給我們提供更為方便的操作,不過這里還是有個建議埋市,最好先用maven的指令創(chuàng)建好maven項目冠桃,然后將其導(dǎo)入IDE,這樣做的原因一個是速度比IDE快道宅,而且在多模塊項目項目中直接復(fù)制粘貼修改maven指令也比操作圖形界面要方便多了食听,對與一些IDE來說還有其他好處,以我最常用的IntelliJ為例污茵,從外部導(dǎo)入maven的web項目會自動生成war和war exploded樱报,而用IDE生成的maven的web項目不會自動生成這兩樣?xùn)|西(注:war和war exploded的區(qū)別是:如果改變了資源文件需要重新打包才能改變war,而war exploded不用泞当,方便進(jìn)行測試)迹蛤,maven和eclipse整合網(wǎng)上資料很多而且我也很久沒有用eclipse了,所以這里就不講了襟士,這里就講一下maven和IntelliJ的整合盗飒,用eclipse的朋友可以直接跳過本節(jié)直接看下一節(jié)了

maven和IntelliJ的整合

IntelliJ自帶有maven,不過自帶的沒有命令行陋桂,對于我這種更喜歡用命令行創(chuàng)建maven項目的人來說逆趣,一般不喜歡用IntelliJ自帶的,而是配置成自己安裝的maven嗜历,方法如下:
菜單上找到 File -> Settings 汗贫,打開Settings后在彈出框的左上角搜索maven,搜索到后點擊并進(jìn)入配置秸脱,如圖:


maven與IntelliJ整合

上圖是最重要的三個配置,1處配置的是你所安裝的maven的根目錄部蛇,2處和3處建議就按照如圖所示進(jìn)行配置.
順便提醒一下摊唇,如果使用IntelliJ自帶的maven的話,默認(rèn)的settings.xml和本地倉庫就不是在上面說的目錄中了涯鲁,而是在IntelliJ安裝目錄所在盤符下一個隱藏的文件夾之中.

maven使用中的常見問題


這里就先講一個我經(jīng)常遇到的問題巷查,在maven多模塊項目中,內(nèi)部模塊之間常常存在一些互相依賴抹腿,假設(shè)模塊B依賴模塊A岛请,我修改了A,增加了一些功能警绩,然后從B中調(diào)用這些功能卻調(diào)用不了崇败,這是什么原因呢?原來是我修改完A之后并沒有將其install或者deploy,所以B依賴的還是修改之前的A后室,然后B就無法體現(xiàn)A中功能的變更缩膝,綜上我們在開發(fā)maven項目時要養(yǎng)成一個好習(xí)慣,修改完一個模塊之后立即將其install或者deploy岸霹,然后再去搞下一個模塊疾层。

個人博客地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贡避,隨后出現(xiàn)的幾起案子痛黎,更是在濱河造成了極大的恐慌,老刑警劉巖刮吧,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湖饱,死亡現(xiàn)場離奇詭異,居然都是意外死亡皇筛,警方通過查閱死者的電腦和手機(jī)琉历,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來水醋,“玉大人旗笔,你說我怎么就攤上這事≈糇伲” “怎么了蝇恶?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惶桐。 經(jīng)常有香客問我撮弧,道長,這世上最難降的妖魔是什么姚糊? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任贿衍,我火速辦了婚禮,結(jié)果婚禮上救恨,老公的妹妹穿的比我還像新娘贸辈。我一直安慰自己,他們只是感情好肠槽,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布擎淤。 她就那樣靜靜地躺著,像睡著了一般秸仙。 火紅的嫁衣襯著肌膚如雪嘴拢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天寂纪,我揣著相機(jī)與錄音席吴,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛抢腐,可吹牛的內(nèi)容都是我干的姑曙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼迈倍,長吁一口氣:“原來是場噩夢啊……” “哼伤靠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啼染,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宴合,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迹鹅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卦洽,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年斜棚,在試婚紗的時候發(fā)現(xiàn)自己被綠了阀蒂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡弟蚀,死狀恐怖蚤霞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情义钉,我是刑警寧澤昧绣,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站捶闸,受9級特大地震影響夜畴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜删壮,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一贪绘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧央碟,春花似錦兔簇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽边酒。三九已至经柴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墩朦,已是汗流浹背坯认。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牛哺。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓陋气,卻偏偏與公主長得像,于是被迫代替她去往敵國和親引润。 傳聞我的和親對象是個殘疾皇子巩趁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容