2趁舀、Maven安裝與使用

Maven系列文集

三、Maven安裝配置

1祝沸、下載

官方下載

下載解壓即可矮烹。在安裝 Maven 之前,注意:需確保安裝JDK

image

2罩锐、環(huán)境變量配置

  1. MAVEN_HOME
    maven的bin目錄所在路徑(不包含/bin)


    image
  2. Path
    添加 %MAVEN_HOME%/bin


    image
  3. maven升級(jí):
    下載新版本Maven解壓奉狈,修改M2_HOME路徑即可

3、Maven目錄說明

  1. 說明
    目錄 說明
    bin mvn運(yùn)行腳本涩惑,配置java命令, mvn / mvnDebug
    boot 只包含一個(gè)plexus-classworlds jar包仁期,Maven類加載器框架
    conf settings.xml全局maven配置文件,【推薦】復(fù)制該文件至 /.m2/目錄下(表示用戶目錄)
    lib Maven運(yùn)行需要的Java類庫(kù),Maven jar包以及第三方依賴jar包
  2. ~/.m2/目錄(默認(rèn)本地倉(cāng)庫(kù)目錄)
    • Winodw:
      C:\Users${user.home}\ .m2目錄下
    • Linux:
      直接在根目錄

4蟀拷、Maven常用配置

  1. 設(shè)置環(huán)境變量MAVEN_OPTS
    通常設(shè)置MAVEN_OPTS的值為-Xms128m -Xmx512m,因?yàn)?strong>mvn命令實(shí)際執(zhí)行java命令碰纬,項(xiàng)目較大時(shí),使用Maven生成項(xiàng)目站點(diǎn)需要占用大量?jī)?nèi)存问芬,如果沒有該配置,容易得到java.lang.OutOfMemeryException寿桨。
  2. 配置用戶settings.xml
    用戶可選擇配置conf中的全局配置或.m2目錄下的用戶配置此衅,推薦使用用戶配置,避免影響系統(tǒng)中其他用戶亭螟,并且配置用戶配置便于maven升級(jí)挡鞍,因?yàn)镸aven升級(jí)后,conf下的全局配置需要重新設(shè)置预烙,而.m2下的用戶配置不變墨微。
  3. 不使用IDE內(nèi)嵌Maven
    IDE集成的Maven,有些時(shí)候我們需要在終端上進(jìn)行命令的操作,可能會(huì)造成版本不一致的問題扁掸。

5翘县、settings.xml

settings.xml分類全局配置和用戶配置,

全局配置直接修改安裝目錄下conf目錄下的settings.xml文件即可

image

用戶配置將settings.xml文件復(fù)制到.m2目錄下即可

image

Maven的配置文件遵循就近原則;也就是說 User Setting 可以覆蓋 Global Setting

6谴分、settings.xml文件內(nèi)容

主要修改的地方有三個(gè),修改本地倉(cāng)庫(kù),國(guó)內(nèi)鏡像服務(wù)器,配置jdk的版本

  1. 修改本地倉(cāng)庫(kù)
    <localRepository>絕對(duì)路徑</localRepository>
    <!-- 例如 -->
    <localRepository>D:\tools\apache-maven\repository</localRepository>
    
  2. 配置阿里云鏡像倉(cāng)庫(kù)锈麸。在mirrors標(biāo)簽里添加以下一段即可
    <mirror>
         <!-- 倉(cāng)庫(kù)id-->
         <id>alimaven</id>
         <name>aliyun maven</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <!--
             1. 配置成* 就代表我們通過訪問阿里云的maven倉(cāng)庫(kù)從而訪問網(wǎng)路上所有的遠(yuǎn)程倉(cāng)庫(kù),
             2. 配置成central牺蹄,就代表我們通過阿里云訪問central倉(cāng)庫(kù)忘伞,及 http://central.maven.org/maven2,        3. 如果配置成repo1,就代表通過阿里云訪問http://repo1.maven.org/maven2沙兰,阿里云和這些遠(yuǎn)程倉(cāng)庫(kù)之間必須可以鏡像氓奈,存在一定的鏡像關(guān)系。-->
         <mirrorOf>*</mirrorOf>
       <!-- 可選 -->
     <repository>
         <releases>
                    <!-- 下載發(fā)布版構(gòu)件 -->
                    <enabled>true</enabled>
                    <!--
                        Maven 從遠(yuǎn)程倉(cāng)庫(kù)更新的頻率
                        never(從不)
                        daily(每天一次,默認(rèn))
                        always(每次構(gòu)建都檢查更新)
                        interval:X(每隔X分鐘檢查一次,X為任意整數(shù))
                    -->
                    <updatePolicy>never</updatePolicy>
                    <!--
                        檢驗(yàn)文件的策略,如果校驗(yàn)失敗:
                        warn(默認(rèn)):輸出警告信息
                        fail: 構(gòu)建失敗
                        ignore: 忽略
                    -->
                    <checksumPolicy>warn</checksumPolicy>
                </releases>
                <snapshots>
                    <!-- 不從中央倉(cāng)庫(kù)下載快照版本的構(gòu)件 -->
                    <enabled>false</enabled>
                </snapshots>
            </repository>
     </mirror>
    
    # 常用的倉(cāng)庫(kù)
    1鼎天、http://maven.aliyun.com/nexus/content/groups/public/  阿里云  (強(qiáng)力推薦)
    2舀奶、http://www.sonatype.org/nexus/  私服nexus工具使用
    3、http://mvnrepository.com/ (推薦)
    4训措、http://repo1.maven.org/maven2
    5伪节、http://repo2.maven.org/maven2/ 私服nexus工具使用
    6、http://uk.maven.org/maven2/
    7绩鸣、http://repository.jboss.org/nexus/content/groups/public
    8怀大、http://maven.oschina.net/content/groups/public/
    9、http://mirrors.ibiblio.org/maven2/
    10呀闻、http://maven.antelink.com/content/repositories/central/
    11化借、http://nexus.openkoala.org/nexus/content/groups/Koala-release/
    12、http://maven.tmatesoft.com/content/groups/public/
    
  3. 在profiles標(biāo)簽下加入以下一段話修改jdk版本捡多。按自己所需配置即可
    <profile>
         <id>jdk-1.8</id>
          <activation>
               <activeByDefault>true</activeByDefault>
               <jdk>1.8</jdk>
            </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
     </properties>
    </profile>
    

四蓖康、創(chuàng)建工程

1铐炫、使用Maven命令創(chuàng)建(了解)

  1. 命令
    mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate
    簡(jiǎn)寫方式
    mvn archetype:generate
    
  2. 選擇archetype(項(xiàng)目骨架)
    執(zhí)行插件之后會(huì)列出很多可用的Archetype列表,每一個(gè)Archetype前面都會(huì)對(duì)應(yīng)有一個(gè)編號(hào),同時(shí)命令行會(huì)提示一個(gè)默認(rèn)的編號(hào)蒜焊,其對(duì)應(yīng)的Archetype為maven-archetype-quickstart創(chuàng)建普通java工程,
    直接回車或選擇而maven-archetype-webapp骨架則是用來創(chuàng)建一個(gè)JavaWeb Project倒信,或輸入指定編號(hào)回車
    緊接著會(huì)Maven會(huì)提示輸入要?jiǎng)?chuàng)建項(xiàng)目的groupId、artifactId泳梆、version以及包名package,確認(rèn)后即可生成一個(gè)maven項(xiàng)目鳖悠。
    image

    image
  3. 一行命令
    mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

2、項(xiàng)目結(jié)構(gòu)說明

  1. java工程
    ├── pom.xml                           核心配置文件
    └── src                              源文件
        ├── main                         存放主程序
        │   └── java                     存放Java源代碼代碼
        │       └── com.wener.hello      定義包名為項(xiàng)目組.項(xiàng)目名优妙,所有java類都在該包下創(chuàng)建
        │           └── App.java
        └── test                         測(cè)試目錄
            └── java
                └── com.wener.hello
                    └── AppTest.java     測(cè)試Java代碼
    
  2. web工程
    ├── pom.xml
    └── src
        └── main
            ├── resources                 存放框架的配置文件等
            └── webapp
                ├── WEB-INF
                │   └── web.xml
                └── index.jsp
    
  3. 實(shí)戰(zhàn)開發(fā)中完整的結(jié)構(gòu)
    ├── pom.xml
    └── src                                               源文件
        ├── main                                  存放主程序
        │   ├── java                    存放Java源代碼代碼
        │   ├── resources          核心配置文件
        │   └── webapp                        web應(yīng)用的目錄
        │       ├── WEB-INF
        │       │   └── web.xml    web應(yīng)用程序入口配置
        │       └── index.jsp
        └── test
            ├── java                測(cè)試目錄
            └── resources           存放測(cè)試框架的配置文件等
    

3乘综、為什么要固定項(xiàng)目結(jié)構(gòu)

  1. Maven 要負(fù)責(zé)項(xiàng)目的自動(dòng)化構(gòu)建,以編譯為例套硼,Maven 要想自動(dòng)進(jìn)行編譯卡辰,那么它必須知道 Java 的源文件保存在哪里,這樣約定之后邪意,不用我們手動(dòng)指定位置九妈,Maven 能知道位置,從而幫我們完成自動(dòng)編譯抄罕。
  2. 遵循 約定—>配置--->編碼允蚣。即能進(jìn)行配置的不要去編碼指定,能事先約定規(guī)則的不要去進(jìn)行配置呆贿。這樣既減輕了勞動(dòng)力嚷兔,也能防止出錯(cuò)。當(dāng)然我們也可以手動(dòng)去配置,但不推薦

4做入、其它常用maven命令(了解)

  1. mvn clean
    說明: 清理項(xiàng)目生產(chǎn)的臨時(shí)文件,一般是模塊下的target目錄
  2. mvn compile
    前面我們按照maven約束好的文件路徑建好項(xiàng)目后冒晰,加入pom.xml 在命令行輸入mvn compile后,maven就會(huì)自動(dòng)幫我們下載依賴jar竟块,為代碼生成字節(jié)碼文件等壶运。我們把這個(gè)過程稱為 編譯。
  3. mvn package
    說明: 項(xiàng)目打包工具,會(huì)在模塊下的target目錄生成jar或war等文件
  4. mvn test
    說明: 測(cè)試命令,或執(zhí)行src/test/java/下junit的測(cè)試用例.
  5. mvn install
    說明: 模塊安裝命令 將打包的的jar/war文件復(fù)制到你的本地倉(cāng)庫(kù)中,供其他模塊使用 -Dmaven.test.skip=true 跳過測(cè)試(同時(shí)會(huì)跳過test compile)
  6. mvn deploy
    說明: 發(fā)布命令 將打包的文件發(fā)布到遠(yuǎn)程參考,提供其他人員進(jìn)行下載依賴 ,一般是發(fā)布到公司的私服

五浪秘、pom,xml

  1. 說明
    Project Object Model 項(xiàng)目對(duì)象模型蒋情,Maven 的核心配置文件,pom.xml耸携,與構(gòu)建過程相關(guān)的一切設(shè)置都在這個(gè)文件中進(jìn)行配置
  2. 內(nèi)容說明
    <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">
       <!-- 模型版本棵癣。maven2 maven3 必須是這樣寫,固定格式-->
      <modelVersion>4.0.0</modelVersion>
       <!-- 公司或者組織的唯一標(biāo)志夺衍,公司域名反寫 必要-->
      <groupId>com.wener</groupId>
     <!--  本項(xiàng)目的唯一ID狈谊,一個(gè)groupId下面可能多個(gè)項(xiàng)目,就是靠artifactId來區(qū)分的  必要-->
      <artifactId>demo</artifactId>
      <!-- 本項(xiàng)目目前所處的版本號(hào)  必要-->
      <version>1.0-SNAPSHOT</version>
      <!-- 打包的機(jī)制,如pom,jar, war, maven-plugin, ejb, ear, rar, par河劝,默認(rèn)為jar -->
      <packaging>jar</packaging>
      <!--聲明了一個(gè)對(duì)用戶更為友好的項(xiàng)目名稱壁榕,非必須,推薦聲明赎瞎, -->
      <name>demo</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     <!-- 依賴管理 -->
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牌里,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子煎娇,更是在濱河造成了極大的恐慌二庵,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缓呛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡杭隙,警方通過查閱死者的電腦和手機(jī)哟绊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰憎,“玉大人票髓,你說我怎么就攤上這事∠吃牛” “怎么了洽沟?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蜗细。 經(jīng)常有香客問我裆操,道長(zhǎng),這世上最難降的妖魔是什么炉媒? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任踪区,我火速辦了婚禮,結(jié)果婚禮上吊骤,老公的妹妹穿的比我還像新娘缎岗。我一直安慰自己,他們只是感情好白粉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布传泊。 她就那樣靜靜地躺著,像睡著了一般鸭巴。 火紅的嫁衣襯著肌膚如雪眷细。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天奕扣,我揣著相機(jī)與錄音薪鹦,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛池磁,可吹牛的內(nèi)容都是我干的奔害。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼地熄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼华临!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起端考,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雅潭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后却特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扶供,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年裂明,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椿浓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闽晦,死狀恐怖扳碍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仙蛉,我是刑警寧澤笋敞,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站荠瘪,受9級(jí)特大地震影響夯巷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巧还,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一鞭莽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧麸祷,春花似錦澎怒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至走孽,卻和暖如春惧辈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背磕瓷。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工盒齿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留念逞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓边翁,卻偏偏與公主長(zhǎng)得像翎承,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子符匾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354