1. 程式人生 > >Maven(三)在Eclipse中使用Maven與Maven坐標

Maven(三)在Eclipse中使用Maven與Maven坐標

深圳 tom 可能 public 本地倉庫 五步 生成 文件中 了吧

這一篇講解一下在eclipse中使用maven,在一些高版本的eclipse中是自帶maven插件的。所以這裏就不在講解怎麽安裝插件了。

接下來我們創建一個MavenFirst項目

一、在Eclipse中創建一個MavenFirst項目

  第一步:創建一個Maven工程

    技術分享

  第二步:選擇創建java項目——>next

    技術分享

  第三步:填寫GAV

    技術分享

  第四步:點擊finsh,完成創建

  第五步:創建一個MavenFirst.java

技術分享
package com.zyh.maven.MavenFirst;

public class MavenFirst { public String sayHello(String name){ return "hello"+name; } }
MavenFirst

    位置:

      技術分享

  第六步:使用eclipse的選項執行maven命令

    技術分享

    註意:

      這裏的6--9 都是快捷方式

        9 測試,相當於命令行 mvn test

        8 安裝,相當於命令行 mvn install 作用:將其上傳到本地倉庫,具體見上面講解

        7 關聯源碼,這個不需要解釋吧,平常我們使用別的jar包也關聯過源碼

        6 清理,mvn clean

       5 maven bulid  執行maven命令,等效 mvn

        技術分享

        4 maven build 5快速的操作

          如果沒有操作過,與5相同

          如果操作過一次,將直接執行上一次5的命令

          如果操作多次,將提供選擇框

  第七步:當我們執行maven install時,查看文件結構

    技術分享

註意:如果我們的例子是Maven的web項目時,將maven web項目發布到tomcat上運行

  命令:tomcat:run

  技術分享

  通過網址即可訪問,同時會將該項目上傳到本地倉庫。

二、Maven坐標

2.1、什麽是坐標 

  關於坐標(Coordinate),大家最熟悉的應該就是數學中的坐標了吧,我印象不是特別深刻,說的數學專業一點叫作平面幾何。在一個平面坐標系中,有x軸和y軸,x軸就是橫線,y軸就是豎線,坐標(x,y)表示這個點距離x軸為y,距離y軸為x的一點,任何一個坐標都能唯一標識該平面中的一點。

  在實際的生活中,我們可以將地址看成是一種坐標。不同的省,不同的市,不同的區,不同的街道等一系列信息標識了每一個不同的地址。在深圳經常吃外賣的人應該是有體會的,送外賣的小哥都會根據你填寫的地址將外賣送給你,而你填的地址就標識了唯一的一個地址。

    坐標就好比每一個Java構件的身份證一樣。Maven的世界是擁有非常多的Java構件的,可能是jar、可能是war、也可能是其他的一些東西。假如Maven中沒有坐標的概念,我們是無法來區分這些構件的,所以我們要唯一標識每一個構件。

  不然就和傳統的手工方式一樣,你需要spring就去spring下載spring的包,需要mysql又去mysql下載mysql的包,沒有統一的規範又怎麽能夠自動化的去依賴這些構件。

    Maven便給我們制定了一套規則那就是使用坐標進行唯一標識。Maven的坐標元素包括groupId、artifactId、version、packaging、classfier。只要我們提供正確的坐標元素,Maven就能找到對應的構件,首先去你的本地倉庫查找,沒有的話再去遠程倉庫下載。

  如果沒有配置遠程倉庫,會默認從中央倉庫地址(http://repo1.maven.org/maven2)下載構件,該中央倉庫包含了世界上大部分流行的開源項目構件,但不一定所有構件都有,我在以前的開發中就遇到過找不到oracle數據庫jar包的問題,不知道現在是否依然如此。

  在我們自己開發項目的時候,也是要給我們的項目定義坐標的,這是強制性要求,只有這樣,其他項目才能引用該項目的構件。

2.2、Maven坐標的主要組成

  groupId:組織標識(包名)
  artifactId:項目名稱
  version:項目的當前版本
  packaging:項目的打包方式,最為常見的jar和war兩種

  classifier: 該元素用來幫助定義構建輸出的一些附屬構件

  註:groupId、artifactId、version、packaging是必須定義的,classifier是不能被直接定義的,因為附屬構件不是項目直接默認生成的,而是由附加的插件幫助生成的。

    技術分享

  groupId :定義當前Maven項目隸屬的實際項目。首先,Maven項目和實際項目不一定是一對一的關系。比如SpringFrameWork這一實際項目,其對應的Maven項目會有很多,如spring-core,spring-context等。這是由於Maven中模塊的概念,因此,一個實際項目往往會被劃分成很多模塊。

        其次,groupId不應該對應項目隸屬的組織或公司。原因很簡單,一個組織下會有很多實際項目,如果groupId只定義到組織級別,而後面我們會看到,artifactId只能定義Maven項目(模塊),那麽實際項目這個層次將難以定義。

        最後,groupId的表示方式與Java包名的表達方式類似,通常與域名反向一一對應。上例中,groupId為junit,是不是感覺很特殊,這樣也是可以的,因為全世界就這麽個junit,它也沒有很多分支。

  artifactId : 該元素定義當前實際項目中的一個Maven項目(模塊),推薦的做法是使用實際項目名稱作為artifactId的前綴。比如上例中的junit,junit就是實際的項目名稱,方便而且直觀。

        在默認情況下,maven生成的構件,會以artifactId作為文件頭,如junit-3.8.1.jar,使用實際項目名稱作為前綴,就能方便的從本地倉庫找到某個項目的構件。

  version : 該元素定義了使用構件的版本,如上例中junit的版本是3.8.1,你也可以改為4.0表示使用4.0版本的junit。

  packaging :定義Maven項目打包的方式,使用構件的什麽包。首先,打包方式通常與所生成構件的文件擴展名對應,如上例中沒有packaging,則默認為jar包,最終的文件名為junit-3.8.1.jar。也可以打包成war等。

  classifier: 該元素用來幫助定義構建輸出的一些附件。附屬構件與主構件對應,如上例中的主構件為junit-3.8.1.jar,該項目可能還會通過一些插件生成如junit-3.8.1-javadoc.jar,junit-3.8.1-sources.jar, 這樣附屬構件也就擁有了自己唯一的坐標。

2.3、獲取maven坐標(獲取maven的三個關鍵屬性值)

  1)使用網站搜索(從中央倉庫獲取)

  第一步:百度搜索關鍵字“maven repository”

    技術分享

  第二步:輸入關鍵字查詢獲得需要內容,確定需要版本

    技術分享

  第三步:獲取坐標

    技術分享

  2)使用本地倉庫,通過eclipse獲得坐標

    第一步:添加依賴pom.xml文件中,右擊

      技術分享

  第二步:輸入關鍵字,獲取坐標。

    技術分享

Maven(三)在Eclipse中使用Maven與Maven坐標