Maven教程(一)


現在的java項目一般都是通過Maven管理jar包與版本,本身屬於依賴倒置,通過maven更方便的管理jar包。

當然,在安裝maven之前需要安裝配置好JDK,這部分省略。

 

配置maven的運行環境。

第一步

首先在http://maven.apache.org/download.cgi 上找到maven安裝包。解壓到硬盤你樂意的位置。

然后記錄maven的路徑 ,例如我的是:D:\mavenFile\apache-maven-3.5.3

第二步

我們開始配置環境變量。總共有三個環境變量需要配置。分別是M2(運行的bin目錄)、M2_HOME(運行的文件夾位置)、MAVEN_OPTS(運行的配置信息)。例如我的配置就是。

M2_HOME:D:\mavenFile\apache-maven-3.5.3

M2:D:\mavenFile\apache-maven-3.5.3\bin

MAVEN_OPTS: -Xms256m -Xmx512m

第三步

在你的Path環境變量下添加bin目錄的路徑,win7下也可以使用;%M2%代替

第四步

在CMD界面,運行 mvn --version。可查看當前maven的版本,安裝成功后可知。

 

創建maven項目

在eclipse創建mave項目非常簡單。

在項目管理的框內,右鍵創建 other.

搜索maven 創建maven Project。

你可以直接下一步來填寫所需信息創建mavan。(我建議你先讀完下面的pom講解再創建maven)

也可以在途中選中create a simple project.來創建含有父類pom的maven.

 

 

POM講解

POM 代表工程對象模型。它是使用 Maven 工作時的基本組建,是一個 xml 文件。它被放在工程根目錄下,文件命名為 pom.xml。

POM 包含了關於工程和各種配置細節的信息,Maven 使用這些信息構建工程。

POM 也包含了目標和插件。

在創建 POM 之前,我們首先確定工程組(groupId),及其名稱(artifactId)和版本,在倉庫中這些屬性是工程的唯一標識。

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.dhh</groupId>
  <artifactId>p1802</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>blog</name>
  <description>mySelf blog</description>
</project>
modelVersion:當前POM.xml的版本格式,這個是用來后台識別
groupId:公司組織表示,建議使用公司域名。也是jar包被mave打包后的存放路徑
artifactId:項目名,你的當前項目名。
version:版本號。

所有的 POM 都繼承自一個父 POM(無論是否顯式定義了這個父 POM)。父 POM 也被稱作 Super POM,它包含了一些可以被繼承的默認設置。
繼承可以讓我們避免一些不必要的通用性配置。可用CMD在項目文件夾下,運行:mvn help:effective-pom。查看父類pom的配置。


Maven生命周期

maven的生命周期一般如下:
1資源拷貝(本階段可以自定義需要拷貝的資源)
2編譯(本階段完成源碼編譯)
3打包配置(根據pom創建管理jar包)
4安裝(使用調用安裝工程包)

 當 Maven 開始構建工程,會按照所定義的階段序列的順序執行每個階段注冊的目標。Maven 有以下三個標准的生命周期:

  clean

  default(or build)

  site

 

  其中clean包含pre-clean、clean 和 post-clean 階段。

  我們執行clean操作可以直接使用工具也可以CMD在pom所在目錄下執行mvn post-clean

  

 

  default(or build)的生命周期階段過多。如下表,不用細看,出錯再看

 

生命周期階段 描述
validate 檢查工程配置是否正確,完成構建過程的所有必要信息是否能夠獲取到。
initialize 初始化構建狀態,例如設置屬性。
generate-sources 生成編譯階段需要包含的任何源碼文件。
process-sources 處理源代碼,例如,過濾任何值(filter any value)。
generate-resources 生成工程包中需要包含的資源文件。
process-resources 拷貝和處理資源文件到目的目錄中,為打包階段做准備。
compile 編譯工程源碼。
process-classes 處理編譯生成的文件,例如 Java Class 字節碼的加強和優化。
generate-test-sources 生成編譯階段需要包含的任何測試源代碼。
process-test-sources 處理測試源代碼,例如,過濾任何值(filter any values)。
test-compile 編譯測試源代碼到測試目的目錄。
process-test-classes 處理測試代碼文件編譯后生成的文件。
test 使用適當的單元測試框架(例如JUnit)運行測試。
prepare-package 在真正打包之前,為准備打包執行任何必要的操作。
package 獲取編譯后的代碼,並按照可發布的格式進行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test 在集成測試執行之前,執行所需的操作。例如,設置所需的環境變量。
integration-test 處理和部署必須的工程包到集成測試能夠運行的環境中。
post-integration-test 在集成測試被執行后執行必要的操作。例如,清理環境。
verify 運行檢查操作來驗證工程包是有效的,並滿足質量要求。
install 安裝工程包到本地倉庫中,該倉庫可以作為本地其他工程的依賴。
deploy 拷貝最終的工程包到遠程倉庫中,以共享給其他開發人員和工程。

  這個階段我們執行的命令是:mvn compile

 

  Maven Site 插件一般用來創建新的報告文檔、部署站點等。執行命令為mvn site

 

倉庫

 maven倉庫指的是存放文件所用的地方。分三種

  本地倉庫。本地自己使用。

  中央倉庫。項目組自己使用。

  遠程倉庫。遠程調用。

 

本地倉庫

Maven 本地倉庫是機器上的一個文件夾。它在你第一次運行任何 maven 命令的時候創建。

Maven 本地倉庫保存你的工程的所有依賴(library jar、plugin jar 等)。當你運行一次 Maven 構建,Maven 會自動下載所有依賴的 jar 文件到本地倉庫中。它避免了每次構建時都引用存放在遠程機器上的依賴文件。

Maven 本地倉庫默認被創建在 %USER_HOME% 目錄下。要修改默認位置,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個路徑。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

 

中央倉庫

Maven 中央倉庫是由 Maven 社區提供的倉庫,其中包含了大量常用的庫。

中央倉庫的關鍵概念:

  • 這個倉庫由 Maven 社區管理。
  • 不需要配置。
  • 需要通過網絡才能訪問。

要瀏覽中央倉庫的內容,maven 社區提供了一個 URL:http://search.maven.org/#browse。使用這個倉庫,開發人員可以搜索所有可以獲取的代碼庫。好像已經廢了不太好用

 

遠程倉庫

如果 Maven 在中央倉庫中也找不到依賴的庫文件,它會停止構建過程並輸出錯誤信息到控制台。為避免這種情況,Maven 提供了遠程倉庫的概念,它是開發人員自己定制倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。

 

項目構建

首先我們按之前所說創建一個maven
然后我們修改pom。xml為
<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">
   <modelVersion>4.0.0</modelVersion>
      <groupId>com.companyname.projectgroup</groupId>
      <artifactId>project</artifactId>
      <version>1.0</version>
      <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
         </dependency>
      </dependencies>  
</project>

你可以看到項目自動導入了jar包

然后你加入如下代碼導入servlet

      <dependency>
            <groupId>javax.servlet</groupId>
                 <artifactId>javax.servlet-api</artifactId>
                 <version>3.0.1</version>
             <scope>compile</scope>
         </dependency>

 

最后導入SpringMVC的Pom.xml如下

<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">
   <modelVersion>4.0.0</modelVersion>
      <groupId>com.companyname.projectgroup</groupId>
      <artifactId>project</artifactId>
      <version>1.0</version>
      <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
         </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
                 <artifactId>javax.servlet-api</artifactId>
                 <version>3.0.1</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
           <version>4.1.2.RELEASE</version>
           <scope>compile</scope>
         </dependency>
      </dependencies>  
</project>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM