maven教程--結合eclipse

maven教程--結合eclipse

 

概念與優點

 

maven是一種很是流行的項目管理工具,它將項目依賴的jar包都變成了配置文件---pom.xml。java

maven經過pom文件讀取須要哪些依賴包,而後到網上mavenRepository下載依賴包到本地。用到的依賴包以及相關文件都會下載到指定本地目錄中,造成本地庫。在編譯項目時,再引入你的項目中。linux

結構以下圖:git

 

maven源網址在國外,下載依賴包很是的緩慢甚至失敗,因此想要順暢得使用maven,還須要配置國內鏡像。具體操做見下文github

 

項目源碼大小大大減少

它的優點在於maven結構的項目源碼很是小,將動輒幾MB,幾十MB的依賴jar包,變成了幾十個字節的配置文件。將項目源碼從幾百MB縮減到不到1MB,利於下載與上傳。在github開源社區上使用很是普遍。web

 

多級依賴包自動下載

幾乎全部發布的jar包都已經支持maven,在各自的pom文件中,標註依賴了哪些jar包以及版本號。這樣,maven就能夠將多級依賴包都一併下載。大大簡化依賴包下載工做。spring

 

輕鬆解決依賴包衝突

發生依賴衝突時,找到引入依賴包的配置並去除(exclusion)依賴便可。經過使用界面化工具能夠更方便得完成去除依賴操做。具體操做見下文apache

 

 

實際操做

這裏都使用eclipse來作說明,eclipse自帶maven插件。windows

 

新建maven項目

菜單欄 File --> new --> project ,搜索maven,選擇maven projectapp

勾選 create a simple project (skip archetype selection),創建簡單的項目,不使用模板。eclipse

建立完成後 結構以下

 

maven默認目錄結構

經常使用路徑說明:

  • src/main/java 源碼路徑
  • src/main/resources 配置文件路徑
  • src/main/webapp web項目頁面代碼
  • src/test/java 測試代碼路徑
  • src/test/resources 測試配置文件路徑

其餘:

  • target/classes 源代碼編譯生成的class文件
  • target/test-classes 源代碼編譯生成的class文件

建議使用maven默認的目錄結構,閱讀他人,或者他人在閱讀你的代碼將變得更容易。使用非默認結構也能夠在pom文件中進行配置。

 

原有項目轉換成maven項目

項目名右鍵 --> configure --> convert to maven project 便可

因爲普通java項目與maven項目結構不一樣,須要移動原有文件到默認maven結構目錄下,或者在pom文件中進行目錄配置。

 

項目刷新

maven結構的項目,其項目配置都寫在pom文件中,項目刷新須要使用 ALT+F5, 或者 項目名右鍵 --> maven --> update project。

 

pom文件簡介

pom裏面除了配置依賴包,還有jdk版本、打包的配置(web包、可執行jar)等等。

pom文件中的配置項很是豐富,這裏只作一些簡單介紹。

 

如何配置依賴

mavenRepository網站上搜索選擇你想要的依賴包名稱,如spring-core

選擇一箇中意的版本

複製配置到pom文件中dependencies標籤下便可。

 

如何配置國內源

maven根目錄在C:\Users\{用戶名}\.m2\

修改maven根目錄下的conf文件夾中的setting.xml文件,內容以下:

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

以後就能享受如飛的maven下載速度。

參考: maven 親測可用國內鏡像 阿里雲

 

如何去除二次依賴

例如去除 common-logging 依賴

eclipse中打開pom文件切換到Dependency Hierarchy頁面

選中commons-logging,右鍵 exclude maven artifact... 保存

依賴中commons-logging就消失了。

pom文件中表現爲 增長了exclusion 去除了commons-logging

 

maven經常使用命令/生命週期

在Maven2中有了明確的生命週期概念,並且都提供與之對應的命令,使得項目構建更加清晰明瞭。主要的生命週期階段:

  • validate,驗證工程是否正確,全部須要的資源是否可用。
  • compile,編譯項目的源代碼。
  • test-compile,編譯項目測試代碼。
  • test,使用已編譯的測試代碼,測試已編譯的源代碼。
  • package,已發佈的格式,如jar,將已編譯的源代碼打包。
  • integration-test,在集成測試能夠運行的環境中處理和發佈包。
  • verify,運行任何檢查,驗證包是否有效且達到質量標準。
  • install,把包安裝在本地的repository中,能夠被其餘工程做爲依賴來使用
  • deploy,在整合或者發佈環境下執行,將最終版本的包拷貝到遠程的repository,使得其餘的開發者或者工程能夠共享。
  • generate-sources,產生應用須要的任何額外的源代碼,如xdoclet。

若是要執行項目編譯,那麼直接輸入:mvn compile便可,對於其餘的階段能夠類推。階段之間是存在依賴關係(dependency)的,如test依賴test-compile。在執行mvn test時,會先運行mvn test-compile,而後纔是mvn test。

這些命令在eclipse中 項目名右鍵 run as --> maven build --> goals 輸入框中使用

 

maven打包

pom文件中增長配置

war包

<build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6.0</version>
      </plugin>
    </plugins>
  </build>

可執行jar包

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>***</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

***填寫mainClass

 

帶依賴打包

<build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>

而後執行 maven package

生成打包文件在項目路徑 target目錄下 .jar/.war文件

 

其餘

maven除告終合eclipse使用 ,也是能夠在windows linux下單獨使用的。

相關文章
相關標籤/搜索