項目管理必備及MyBatis入門---Maven入門

Maven簡介

Maven這個詞翻譯爲("專家","內行"),是跨平臺的項目管理工具

Maven主要服務於基於Java平臺的項目構建,依賴管理,項目信息管理。

 

項目構建

依賴管理

項目信息管理

Maven組成目錄

Maven項目的目錄約定

mvn命令

  • mvn compile 編譯
  • mvn install 編譯,運行和發佈
  • mvn package 編譯  運行不負責發佈,也實用package命令不會講target內容發佈到本地倉庫
  • mvn test 編譯,如果你test包下面有相關java也編譯和運行,但是也一樣不會發布到本地倉庫中
  • mvn clean清除的意思

Maven自動構建Java Project項目

我們再來看最關鍵的一個項目描述文件pom.xml,它的內容長得像下面:

<project ...>
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.itranswarp.learnjava</groupId>
	<artifactId>hello</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>
	<properties>
        ...
	</properties>
	<dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
	</dependencies>
</project>

其中,groupId類似於Java的包名,通常是公司或組織名稱,artifactId類似於Java的類名,通常是項目名稱,再加上version,一個Maven工程就是由groupIdartifactIdversion作爲唯一標識。我們在引用其他第三方庫的時候,也是通過這3個變量確定。例如,依賴commons-logging

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

使用<dependency>聲明一個依賴後,Maven就會自動下載這個依賴包並把它放到classpath中。

依賴關係

Maven定義了幾種依賴關係,分別是compiletestruntimeprovided

scope 說明 示例
compile 編譯時需要用到該jar包(默認) commons-logging
test 編譯Test時需要用到該jar包 junit
runtime 編譯時不需要,但運行時需要用到 mysql
provided 編譯時需要用到,但運行時由JDK或某個服務器提供 servlet-api

其中,默認的compile是最常用的,Maven會把這種類型的依賴直接放入classpath。

test依賴表示僅在測試時使用,正常運行時並不需要。最常用的test依賴就是JUnit:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.2</version>
    <scope>test</scope>
</dependency>

唯一ID

對於某個依賴,Maven只需要3個變量即可唯一確定某個jar包:

  • groupId:屬於組織的名稱,類似Java的包名;
  • artifactId:該jar包自身的名稱,類似Java的類名;
  • version:該jar包的版本。

通過上述3個變量,即可唯一確定某個jar包。Maven通過對jar包進行PGP簽名確保任何一個jar包一經發布就無法修改。修改已發佈jar包的唯一方法是發佈一個新版本。

因此,某個jar包一旦被Maven下載過,即可永久地安全緩存在本地。

注:只有以-SNAPSHOT結尾的版本號會被Maven視爲開發版本,開發版本每次都會重複下載,這種SNAPSHOT版本只能用於內部私有的Maven repo,公開發布的版本不允許出現SNAPSHOT。

Maven鏡像

除了可以從Maven的中央倉庫下載外,還可以從Maven的鏡像倉庫下載。如果訪問Maven的中央倉庫非常慢,我們可以選擇一個速度較快的Maven的鏡像倉庫。Maven鏡像倉庫定期從中央倉庫同步:

           slow    ┌───────────────────┐
    ┌─────────────>│Maven Central Repo.│
    │              └───────────────────┘
    │                        │
    │                        │sync
    │                        ▼
┌───────┐  fast    ┌───────────────────┐
│ User  │─────────>│Maven Mirror Repo. │
└───────┘          └───────────────────┘

中國區用戶可以使用阿里雲提供的Maven鏡像倉庫。使用Maven鏡像倉庫需要一個配置,在用戶主目錄下進入.m2目錄,創建一個settings.xml配置文件,內容如下:

<settings>
    <mirrors>
        <mirror>
            <id>aliyun</id>
            <name>aliyun</name>
            <mirrorOf>central</mirrorOf>
            <!-- 國內推薦阿里雲的Maven鏡像 -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
</settings>

配置鏡像倉庫後,Maven的下載速度就會非常快。

搜索第三方組件

最後一個問題:如果我們要引用一個第三方組件,比如okhttp,如何確切地獲得它的groupIdartifactIdversion?方法是通過search.maven.org搜索關鍵字,找到對應的組件後,直接複製:

copy-maven

 

命令行編譯

在命令中,進入到pom.xml所在目錄,輸入以下命令:

$ mvn clean package

如果一切順利,即可在target目錄下獲得編譯後自動打包的jar。

在IDE中使用Maven

幾乎所有的IDE都內置了對Maven的支持。在Eclipse中,可以直接創建或導入Maven項目。如果導入後的Maven項目有錯誤,可以嘗試選擇項目後點擊右鍵,選擇Maven - Update Project...更新:

update-maven-project

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章