.Net轉Java自學之路—Maven篇

Maven:java

  Maven是Apache公司開源項目。是一個項目構建工具。用來依賴管理。web

  一樣的項目,使用Maven開發項目相對於傳統方式開發項目佔用的空間要小,由於Maven項目沒有Jar包信息。由於Maven項目的Jar包信息都在Jar包倉庫(又稱Maven倉庫)中。tomcat

  Maven查找Jar包的過程主要的核心就是依賴管理。當Maven項目中須要某一個Jar包,只須要在Maven項目中配置須要Jar包座標信息。Maven程序根據Jar包座標信息去Jar包倉庫中去查找Jar包。app

  座標信息實例:struts2-core-2.3.24.jar Apache(公司名稱/域名)+struts2(項目名稱)+2.3.24(版本信息)eclipse

  好處:webapp

    一、再也不拷貝jar包。項目不須要存放jar包。致使項目源代碼體積小。
    二、使用maven開發的項目,若環境統一導入別的maven的項目不會報錯。
    三、代碼耦合度進一步下降。
    四、方便項目進行升級。
    五、節省人力成本。maven

  優點如何實現:ide

    Maven的倆大核心:
      依賴管理:對jar包進行管理的過程。
      項目構建:項目在編碼完成後,對項目進行編譯、測試、打包、部署一系列的操做都是經過命令來實現。工具

    經過maven命令將web項目發佈到tomcat:
      一、cmd命令行進入該發佈項目的根目錄。
      二、運行命令:mvn tomcat:run單元測試

  配置:

    配置環境變量:
      變量名:MAVEN_HOME
      變量值:指定到maven解壓後的根目錄。
      將maven_home環境變量配置到path變量中。

    配置本地倉庫:
      在maven中的setting.xml中配置:

<localRepository>jar包倉庫根目錄</localRepository>

    maven項目核心配置文件:pom.xml

  Maven的cmd經常使用命令:

    clean:清理。mvn clean 去除項目中根目錄的target目錄。
    compile:編譯。mvn compile 將編譯完成的.class文件存放在項目根目錄的target下。
    test:單元測試。mvn test 將項目根目錄下的src/test/java中的單元測試類所有執行。在src/test/java下的類名有XXXTest.java的要求。
    package:打包。mvn package 將項目打包,打包項目根目錄下的target目錄。
    install:安裝。解決本地多個項目公用一個jar包。mvn install 打包並放在jar包本地倉庫。

  Maven項目生命週期:

    在maven中存在」三套「生命週期,每一套生命週期都是相互獨立的,互不影響。在一套生命週期內,執行後面的命令前面命令會自動執行。

    CleanLifeCycle:清理生命週期。clean命令
    defaultLifeCycle:默認生命週期。compile、test、package、install、deploy命令
    siteLifeCycle:站點生命週期。site命令

  配置Eclipse中的Maven環境:

    一、配置m2e插件,Mars2版本自帶maven插件。
    二、配置maven程序:
      window >> preferences >> Maven >> Installations >> Add >> 單擊Directory選擇解壓的maven安裝包.OK >> 勾選配置的maven >> OK
    三、配置userSetting,讓eclipse知道本地倉庫的位置:
      window >> preferences >> Maven >> User Settings >> 在User Settings中選擇解壓maven的安裝包的conf/settings.xml配置文件。
    四、構建索引:
      window >> show view >> maven Repository >> 右擊Local Repository(路徑) >> Rebuild Index 來構建索引

  建立Maven項目:

    建立Maven項目後,勾選Create a simple project ,group id 域名、Artifact Id 項目名、Version 版本。Maven項目建好以後在src/main/webapp下會缺失WEB-INF/web.xml文件,須要手動建立。在pom.xml中設置編譯版本。而後 右擊項目名 >> maven >> update project >> 選擇當前項目 >> OK 會指定編譯版本。

  查找依賴:

    項目創建完成後,須要查找依賴(就是jar包):打開pom.xml,選擇Dependencies >> Add >> 選擇版本,添加依賴(jar包)。

  依賴範圍:

    依賴範圍:默認值 complie。
      complie:做用在在編譯、測試、運行期間。
      test:做用在測試期間。
      provided:做用在編譯、測試期間。
      runtime:做用在測試、運行期間。
      system:做用在編譯、測試期間。

    運行就是部署到tomcat。若是使用到tomcat自帶jar包,須要將項目中依賴做用範圍設置爲provided。

  運行Maven:

    右擊項目>>run as/debug as >> maven build...
    而後在Goals中手動輸入運行命令tomcat:run。而在debug as調試運行時,在該界面須要選擇source選項關聯下源碼才能調試:
      source >> Add >> project >> 選擇調試的項目 >> OK 

  傳遞依賴衝突解決:

    傳遞依賴:A(項目)依賴B(jar包),B依賴C(jar包),那麼B就是A的直接依賴,C是A的傳遞依賴。若導入依賴D,D依賴C,B和D依賴的C版本不一樣。則會形成版本依賴衝突。

    Maven調解原則:
      一、第一聲明者優先原則:使用先聲明定義的傳遞依賴。
      二、路徑近者優先原則:直接依賴級別高與傳遞依賴。

    Maven排除依賴:
      在pom.xml中選擇Dependency Hierarchy >> 右擊要排除的依賴 >> Exclude Maven Artifact... >> OK 

    Maven版本鎖定:
      指定項目中依賴的版本。

<!-- 屬性 -->
<properties>
    <test.version>版本號</test.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <!-- OGNL表達式 -->
            <version>${test.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <!-- 也能夠直接指定版本號 -->
            <version>x.x.x</version>
        </dependency> ...... </dependencies>
</dependencyManagement>

  經過Maven對項目進行拆分、聚合:

    建立maven父工程:
      一、在父工程中只有pom.xml文件,父工程不進行編碼。
      二、項目中須要的依賴信息,只須要在父工程中定義,子模塊繼承。
      三、將建立好的父工程發佈到本地倉庫。若父工程未發佈到本地倉庫,那麼在發佈子工程時會報錯。

    單元測試:
      批量加載Spring配置文件:
        classpath:applicationContext.xml 加載本項目的指定配置文件。
        classpath:applicationContext-*.xml 加載本項目中以applicationContext-開頭的配置文件。
        classpath*:applicationContext-*.xml 加載本項目和依賴包中全部以applicationContext-開頭的配置文件。

    私服安裝:
      一、安裝包nexus-x.x-bundle.zip解壓。
      二、使用管理員打開dos,在dos下執行命令安裝私服。
      三、進入解壓包下的bin目錄,執行:nexus install
      四、啓動服務:nexus start
      五、默認端口號8081,http://ip:8081/nexus/

    私服倉庫類型:
      hosted:宿主倉庫。存放本公司開發的jar包
        > Snapshots:測試版本
        > Releases:正式版本
        > 3rd party:第三方,存在版權問題-Oracle
      proxy:代理倉庫
        > Central:代理中央倉庫
        > Apache Snapshots:Apache下測試版本的jar包
      group:組倉庫;包含宿主參數和代理倉庫。
      virtual:虛擬倉庫。

    上傳Jar包到私服:
      一、在maven目錄下conf/setting.xml認證:配置用戶名/密碼。

<server>
    <!-- 宿主倉庫id -->
    <id>releases</id>
    <!-- 用戶名 -->
    <username>admin</username>
    <!-- 密碼 -->
    <password>admin123</password>
</server>
<server>
    <!-- 宿主倉庫id -->
    <id>snapshots</id>
    <!-- 用戶名 -->
    <username>admin</username>
    <!-- 密碼 -->
    <password>admin123</password>
</server>

      二、在將要上傳的項目的pom.xml中配置jar包上傳路徑url

<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://ip:8081/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://ip:8081/nexus/content/repositories/snapshot</url>
    </snapshotRepository>
</distributionManagement>

    執行命令上傳項目到私服:deploy

    下載Jar包到本地倉庫:在Maven目錄下conf/settings.xml配置模板。

    激活模板:

<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>
相關文章
相關標籤/搜索