天天看點

一文看懂Maven

一、Maven概述

1.1 使用Maven的背景

1.1.1 一個成熟的項目需要引入大量的jar包,且jar包之間的關系錯綜複雜,一個jar包往往又會引用其他jar包,缺少任何一個jar包都會導緻項目編譯失敗,并且因為jar包的數量之多難以查找。

1.1.2 Maven就是一款幫助程式員建構項目的工具,我們隻需要告訴Maven需要哪些Jar 包,它會幫助我們下載下傳所有的Jar,極大提升開發效率。

1.2什麼是Maven

1.2.1 Maven是一個項目建構管理工具。 由Apache組織釋出的一款開源的工具軟體。Maven可以幫助我們完成 清除、編譯、測試、打包、安裝、部署的整個項目建構過程。

1.2.2 Maven不僅是一個項目建構工具,更是一個項目管理工具。它在項目建構工程中,比ant更全面,更靈活。Maven在進行項目建構時,它對項目目錄結構擁有約定,知道你的源代碼在哪裡,類檔案應該放到哪裡去。它擁有生命周期的概念,maven的生命周期是有順序的,在執行後面的生命周期的任務時,不需要顯示的配置前面任務的生命周期。例如執行 mvn install 就可以自動執行編譯,測試,打包等建構過程。

1.2.3 Maven是基于項目對象模型(POM),可以通過一小段描述資訊來管理項目的建構,報告和文檔的軟體項目管理工具。

1.2.4 Maven是跨平台的項目管理工具。主要服務于基于Java平台的項目建構,依賴管理和項目資訊管理。

1.3Maven的目錄構造

一文看懂Maven

1.4Maven開發的好處

1.4.1 使用Maven可以擺脫開發工具的限制 。

1.4.2 使用Maven可以幫助我們管理依賴。

1.4.3 使用Maven自動的管理依賴,從某種程度上簡化了項目開發的環境維護。

1.4.4 支援遠端部署。

1.4.5 使用指令快速的建構項目 。

二、 安裝Maven

2.1 maven官網http://maven.apache.org/

2.2 點選Download,選擇apache-maven-3.6.2-bin.zip下載下傳

一文看懂Maven

2.3 下載下傳完成後,解壓

2.4 配置環境變量

一文看懂Maven
一文看懂Maven

2.5 在cmd中輸入 mvn -v,出現以下資訊則表示成功

一文看懂Maven

2.6 在E:\apache-maven-3.6.2\conf的settings.xml配置本地倉庫

一文看懂Maven

2.7 在E:\apache-maven-3.6.2\conf的settings.xml配置阿裡倉庫資訊

一文看懂Maven

2.8 myEclipse關于Maven的配置

一文看懂Maven
一文看懂Maven
一文看懂Maven

三、在myEclipse建立Maven工程

一文看懂Maven
一文看懂Maven
一文看懂Maven
一文看懂Maven
一文看懂Maven

建立成功,去掉隐藏的src/main/java和src/main/resource

一文看懂Maven
一文看懂Maven
一文看懂Maven
一文看懂Maven

項目至此就建立完成了。

四、Maven的核心概念

4.1 倉庫

4.1.1 本地倉庫 :本地倉庫是指計算機磁盤上的倉庫。這個需要自己從網上下載下傳。

4.1.2 遠端倉庫:

maven的中心倉庫 (需要去通路外網下載下傳,速度很慢)

第三方管理的倉庫 (私服)(此處我們之前在setting.xml中配置的是阿裡的)

4.1.3 倉庫的作用

一文看懂Maven
4.2坐标

4.2.1 在maven中坐标就是為了定位一個唯一确定的jar包。

4.2.2 Maven坐标主要組成

groupId:目前Maven組織名稱

artifactId:實際項目名稱

version:目前項目的目前版本

4.2.3 坐标的擷取: https://mvnrepository.com maven中心倉庫網址

4.3pom.xml配置檔案
<?xml version="1.0" encoding="UTF-8"?>

<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">
  
  <!-- 模型的版本 必須是4.0.0 -->
  <modelVersion>4.0.0</modelVersion>
  
  <!-- 目前項目的坐标 -->
  <groupId>com.ix</groupId>
  <artifactId>TestMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <!-- 你的項目名 -->
  <name>TestMaven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!-- 定義的一些常量 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <!-- 指定項目需要的所有依賴坐标 -->
  <dependencies>
  	<!-- junit測試 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
       <!-- 目前jar包的有效範圍 
        compile 【預設】  随項目釋出
      	test  僅限測試包有效
      	provided  期待容器提供
      	runtime  運作時使用
      -->
    </dependency>
    
    <!-- 引入日志jar包 -->
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	    <version>1.2.17</version>
	</dependency>
	
     <!-- 資料庫驅動jar -->
    <dependency>
		    <groupId>com.oracle</groupId>
		    <artifactId>ojdbc6</artifactId>
		    <version>12.1.0.1-atlassian-hosted</version>
	</dependency>
	
	 <!-- 引入mybatis的jar包 -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.2.8</version>
	</dependency>
	
    <!-- servlet -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>servlet-api</artifactId>
	    <version>2.5</version>
	</dependency>

    <!-- jsp -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>jsp-api</artifactId>
	    <version>2.0</version>
	</dependency>
	
	<!-- 引入struts2的jar包 -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-core</artifactId>
	    <version>2.3.16</version>
	</dependency>
	
    <!-- jstl -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>jstl</artifactId>
	    <version>1.2</version>
	</dependency>
   
  </dependencies>

  <build>
    <finalName>TestMaven</finalName>
  </build>
  
</project>

           
4.4Maven Web的項目結構
一文看懂Maven

繼續閱讀