Maven

1、Maven簡介

Maven是自動化構建工具。包含:項目關係的處理,項目打包,項目發佈等功能;java

Maven是基於POM(項目對象模型)模型進行管理jar包。web

Maven獲取依賴的流程。spring

1.在項目中配置POM、添加其餘項目(jar包)的座標。apache

  Group Id(組織名) Artifact Id(項目名) version(版本)mybatis

2.項目先去本地倉庫中找指定座標項目(jar包),若是有就把這個jar包以來進行,若是沒有,就去中央倉庫去進行下載到本地倉庫中。app

2、建立第一個Maven項目。

1.手動構建不用模板webapp

 

2.配置Maven的鏡像和jdk版本maven

因爲中央倉庫默認是國外的。把中央倉庫地址配置成國內提高下載速度。多配置到阿里巴巴的鏡像ide

 

 在settings、xml中添加 工具

  mirror配置鏡像

  profile配置jdk

 

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
    </profiles>
</settings>

 

3.配置pom.xml

全部依賴的jar都放在<dependencies>標籤中

每一個jar就是一個<dependency>標籤

全部jar的座標能夠在https://mvnrepository.com

 <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.8.RELEASE</version>
    </dependency>
</dependencies>

3、Maven項目結構

 

 

4、 Maven中項目和項目之間的關係

Maven基於POM模型。把每一個項目都當作一個對象進行看待,每一個對象包含三個屬性:Group IdArtifact IdVersion。項目和項目之間具備三種關係:依賴、繼承、聚合。

依賴

所謂的依賴就是在Maven中導入其餘項目的jar包。能夠導入中央倉庫中包含的jar,也能夠導入當前本身的其餘項目jar

1.1 關於依賴本機其餘項目步驟

新建maven項目。

雙擊install把當前項目打包成jar,並安裝到本地倉庫中。同時也能夠在當前項目的target文件夾中看見

 

 

 

在另外一個項目的pom.xml中添加剛纔項目的依賴就能夠。

 

 

 

1.2 依賴的傳遞性

假設項目B依賴了項目A,若是項目C依賴了項目B,項目C也可使用項目A中內容。這也是爲何導入Spring-context時出現了不少其餘jar的緣由。

 

 

 

1.3 取消依賴傳遞性

不少狀況會出現依賴的版本是咱們不能使用的版本,經過在pom.xml中經過<exclusions>取消依賴傳遞性。在經過<dependency>從新進行依賴其餘版本。

 

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.1.7.RELEASE</version>
</dependency>

 

 

繼承

若是項目A繼承了項目B,在項目Bpom.xml中配置的內容會被繼承(父項目能夠控制是否被繼承)。

繼承關係只能在子項目中體現出來。在子項目的pom.xml中會有<parent>標籤。

2.1 父項目對繼承的控制

能夠經過<dependecyManagement>控制裏面的內容是子項目可能使用的jar包。裏面的內容在子項目中不會自動被依賴,若是子項目須要依賴此jar,須要手動進行<dependecy>可是座標中能夠沒有<version>.

在父項目中一旦使用<dependecyManagement>多結合<properties>標籤進行版本控制

<!-- 統一的版本管理 -->
<properties>
    <spring-context-version>5.1.7.RELEASE</spring-context-version>
</properties>

<!--子項目可能使用 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-context-version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<!-- 全部子項目必定會被導入-->
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
</dependencies>

在子項目中不須要寫version

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
</dependencies>

3 聚合

聚合是繼承的特例。聚合的前提是繼承。

聚合是父項目直接把子項目包含在當前項目中。而繼承只是Maven控制項目和項目直接具備繼承關係,父項目文件夾中沒有子項目。

聚合關係時不只僅子項目中有<parent>父項目中還具備<modules>

 

<modules>
    <module>child</module>
    <module>child2</module>
</modules>

5、 項目類型

Maven中項目一共分爲3中類型。pomjarwar默認是jar類型。能夠經過<packaging>進行配置。

 

jar

 

表示項目打包後爲jar類型。表示當前項目爲普通java項目。

 

war

 

表示項目打包後爲war類型。表示當前項目爲web項目。若是是web項目必須修改這個值爲war,不然沒法打包webapp文件夾。

 

pom

 

當項目是父項目時項目類型爲pom。在idea中一旦給一個項目建立module後會自動把父項目的<packaging>修改成pom 

 

6、 scope

 

<scope><dependency>子標籤,控制這個jar何時生效。

 

可取值:

 

compile:默認值,編譯運行等都須要

 

provided:只有編譯時使用

 

runtime:只有運行時使用

 

test:只有在測試的使用使用

 

7、 資源拷貝插件

 

Maven項目,Maven會對java文件夾中.java進行編譯,其餘文件不編譯。resources裏面內容會直接放入到 classes中,Maven認爲全部的資源文件(.java文件)應該都放入到resouces下。

 

一旦配置了資源拷貝插件後,Maven將不自動把src/main/resources下的內容進行編譯拷貝。

 

資源拷貝插件是配置在<build>下的

 

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>

相關文章
相關標籤/搜索