Maven基礎入門與核心知識

Apache Maven是一個軟件項目管理和綜合工具。基於項目對象模型(POM)的概念,Maven能夠從一箇中心資料片管理項目構建,報告和文件。

Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊能夠自動完成項目的基礎工具建設,Maven使用標準的目錄結構和默認構建生命週期。html

在多個開發團隊環境時,Maven能夠設置按標準在很是短的時間裏完成配置工做。因爲大部分項目的設置都很簡單,而且可重複使用,Maven讓開發人員的工做更輕鬆,同時建立報表,檢查,構建和測試自動化設置。java

歸納地說,Maven簡化和標準化項目建設過程。處理編譯,分配,文檔,團隊協做和其餘任務的無縫鏈接。 Maven增長可重用性並負責創建相關的任務。web

安裝配置

安裝須要Java支持(JDK >= 1.7)。apache

下載壓縮包

官方下載地址:http://maven.apache.org/download.cgitomcat

解壓安裝

解壓壓縮包至目錄,個人安裝位置:D:\apache-maven-3.5.4app

  • bin:mvn的運行腳本
  • boot:mvn類加載器框架
  • conf:配置文件目錄
  • lib:依賴類庫

配置環境變量

『計算機』-->『右鍵屬性』-->『高級系統設置』-->『環境變量』-->『系統變量』框架

MAVEN_HOME

PATH

依次肯定,退出配置。yii

配置Maven

打開Maven目錄,./conf/settings.xmlwebapp

配置本地存儲庫

添加配置maven

<localRepository>D:/mavenRepository/repository</localRepository>

 localRepository 標籤包含的就是本地存儲庫的地址。

配置鏡像倉庫

因爲中央存儲庫在國外,國內可能打不開,因此在 mirrors 標籤中添加阿里雲鏡像倉庫配置。

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

測試安裝

打開CMD窗口,輸入命令: mvn -v 

出現如下內容,說明Maven安裝成功。

建立Maven項目

首先說明Maven約定的目錄結構:

├─ src
│ ├─ main          存放主程序
│ │ ├─ java        存放Java源文件
│ │ ├─ resources   存放框架或其餘工具的配置文件
│ ├─ test          存放測試程序
│ │ ├─ java        存放Java測試的源文件
│ │ ├─ resources   存放測試的配置文件
├─pom.xml          Maven工程的核心配置

這裏我直接使用IntelliJ IDEA建立Maven項目。

這裏能夠不勾選 create from archetype 直接建立,使用標準的模板(初始不作web測試,不須要使用此模板),這裏我選擇使用webapp模板(初始文件建立,能夠參考我下面的構建WEB項目)。

這裏在Properties中添加一個參數archetypeCatalog=internal

信息輸入完後點擊Finish,至此Maven項目就建立完了,由於咱們選擇的是webapp,全部有些Maven約定的目錄須要咱們手動建立補全。

經常使用構建命令

maven01 - 編譯/測試

建立Maven項目maven01

配置pom.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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.maven01</groupId>
  <artifactId>maven01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>maven01 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>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>maven01</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
View Code

在maven01/src/main/java建立包 com.maven01.model 

建立HelloWorld.java

package com.maven01.model;

public class HelloWorld {
    public String sayHello() {
        return "Hello World !!";
    }
}
View Code

在maven01/src/test/java建立包 com.maven01.model

建立HelloWorldTest.java

package com.maven01.model;

import org.junit.*;
import org.junit.Assert.*;

public class HelloWorldTest {
    @Test
    public void testHello() {
        Assert.assertEquals("Hello World !!", new HelloWorld().sayHello());
    }
}
View Code

mvn compile  - 編譯

打開CMD,跳轉當前位置至項目目錄。

運行命令: mvn compile 

第一次運行會下載不少資源。

出現BUILD SUCCESS說明編譯成功:

mvn test - 測試

運行命令: mvn test 

第一次運行一樣會下載依賴資源。

出現BUILD SUCCESS說明運行成功:

maven02 - 安裝/依賴

建立Maven項目maven02

配置pom.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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.maven02</groupId>
  <artifactId>maven02</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>maven02 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>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>maven02</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
View Code

在maven02/src/main/java建立包 com.maven02.util

建立Speak.java

package com.maven02.util;

import com.maven01.model.HelloWorld;

public class Speak {
    public String sayHi() {
        return new HelloWorld().sayHello();
    }
}
View Code

在maven02/src/test/java建立包 com.maven01.util

建立SpeakTest.java

package com.maven02.util;

import org.junit.Assert;
import org.junit.Test;

public class SpeakTest {
    @Test
    public void testsayHi() {
        Assert.assertEquals("Hello World !!", new Speak().sayHi());
    }
}
View Code

這時咱們使用編譯命令,嘗試編譯maven02會發現報錯:

mvn install - 安裝

跳轉盤符至maven01目錄

運行命令: mvn install

將maven01的jar包安裝到本地倉庫中 

從新配置maven02的pom.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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.maven02</groupId>
  <artifactId>maven02</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>maven02 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>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.maven01</groupId>
      <artifactId>maven01</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>maven02</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
View Code

從新編譯maven02

mvn dependency:tree - 查看依賴

運行命令: mvn dependency:tree 

自動構建目錄

maven03 - 自動構建目錄

mvn archetype:generate - 按照提示進行選擇構建

建立文件夾maven03

跳轉盤符至maven03目錄

運行命令: mvn archetype:generate 

運行成功後會發現,目錄已經自動構建了出來:

├─maven0301-service
│  │  pom.xml
│  │
│  └─src
│      ├─main
│      │  └─java
│      │      └─com
│      │          └─maven0301
│      │              └─service
│      │                      App.java
│      │
│      └─test
│          └─java
│              └─com
│                  └─maven0301
│                      └─service
│                              AppTest.java

mvn archetype:generate - 帶參構建

跳轉盤符至maven03目錄

運行命令: mvn archetype:generate -DgroupId=com.maven0302 -DartifactId=maven0302-demo -Dversion=1.0-SNAPSHOT -Dpackage=com.maven0302.demo 

  • DgroupId:組織名
  • DartifactId:項目名-模塊名
  • Dversion:版本號
  • Dpackage:代碼所存在的包名

└─maven0302-demo
    │  pom.xml
    │
    └─src
        ├─main
        │  └─java
        │      └─com
        │          └─maven0302
        │              └─demo
        │                      App.java
        │
        └─test
            └─java
                └─com
                    └─maven0302
                        └─demo
                                AppTest.java

座標和倉庫

座標

在Maven中,任何一個依賴、插件或者項目構建的輸出,均可以稱之爲構件。

每一個構建的位置,表明了一個座標。

pom.xml的依賴配置 groupId 、 artifactId 、 version 便可標識一個座標。

倉庫

關於倉庫的詳解你們能夠參考此博文,介紹的很詳細!

倉庫默認配置位置:%MAVEN_HOME%\lib\maven-model-builder-x.x.x.jar\org\apache\maven\model\pom-4.0.0.xml

生命週期和插件

關於生命週期和插件的詳解你們能夠參考此博文,介紹的很詳細!

依賴範圍

maven 項目不一樣的階段引入到classpath中的依賴是不一樣的,例如,編譯時,maven 會將與編譯相關的依賴引入classpath中,測試時,maven會將測試相關的的依賴引入到classpath中,運行時,maven會將與運行相關的依賴引入classpath中,而依賴範圍就是用來控制依賴於這三種classpath的關係。

在pom.xml依賴管理 dependency 有個設置依賴範圍的標籤 scope 

關於依賴範圍的設置,官方文檔有詳細說明。

  • compile:默認的範圍,編譯測試運行都有效
  • provided:測試和編譯時有效
  • runtime:測試和運行時有效
  • test:測試時有效
  • system:測試和編譯時有效,與本機系統相關聯,可移植性差
  • import:導入的範圍,它只使用在dependencyManagement中,表示從其它的pom中導入dependecy的配置

依賴傳遞

我新建了三個項目分別爲:dependA、dependB、dependC

它們的依賴關係爲:dependC ----> dependB ----> dependA

dependA的pom.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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.dependA</groupId>
    <artifactId>dependA</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>
View Code

dependB的pom.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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.dependB</groupId>
    <artifactId>dependB</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.maven.dependA</groupId>
            <artifactId>dependA</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    
</project>
View Code

dependC的pom.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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.dependC</groupId>
    <artifactId>dependC</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.maven.dependB</groupId>
            <artifactId>dependB</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    
</project>
View Code

我分別編譯安裝了它們,能夠看到間接依賴是傳遞的。

dependA的依賴:

dependB的依賴:

dependC的依賴:

所依賴工程中pom.xml能夠傳遞下去。

當第二依賴的範圍scope 爲compile 的時候, 依賴得以傳遞,傳遞性依賴的範圍與第一直接依賴的範圍一致。

當第二依賴的範圍scope 爲test 的時候, 依賴不會得以傳遞。

當第二依賴的範圍是provided的時候,只傳遞第一直接依賴範圍也爲provided的依賴,且傳遞性依賴的範圍一樣爲 provided。

當第二直接依賴的範圍是runtime的時候,傳遞性依賴的範圍與第一直接依賴的範圍一致,但compile例外,此時傳遞的依賴範圍爲runtime。

依賴排除

若是dependC只依賴dependB而不須要依賴dependA,那麼就須要進行依賴排除配置 exclusion 

dependC的pom.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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.dependC</groupId>
    <artifactId>dependC</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.maven.dependB</groupId>
            <artifactId>dependB</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>com.maven.dependA</groupId>
                    <artifactId>dependA</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>
View Code

依賴衝突

依賴衝突有兩個原則:

短路優先

依賴關係:

 

dependA的依賴commons-io的版本爲2.0

dependB的依賴commons-io的版本爲2.1

dependC根據依賴所得到依賴commons-io的版本爲2.1,由於dependC得到commons-io最近爲dependB的依賴,因此使用dependB的版本2.1

聲明優先

依賴關係:

若是dependC同時依賴dependA、dependB,也就是dependC獲取依賴的路徑長度相同了,則誰先在pom.xml中聲明就優先獲取誰的依賴。

聚合和繼承

聚合

如何咱們的項目包含多個模塊咱們一個一個編譯,會太麻煩,咱們能夠建一個聚合項目,經過modules來統一操做。

新建一個Maven項目aggreationABC,這裏我使用 maven-archetype-quickstart 

修改aggreationABC的pom.xml配置:

  • 修改 packaging 標籤的值爲pom
  • 添加 modules 標籤,增長聚合配置
<?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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.maven.aggreation</groupId>
  <artifactId>aggreationABC</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>aggreationABC</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <modules>
    <module>../dependA</module>
    <module>../dependB</module>
    <module>../dependC</module>
  </modules>

  <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>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
View Code

對aggreationABC進行編譯,發現已經完成聚合了。

繼承

繼承能夠複用父類的pom,能夠爲咱們提升pom複用,子模塊能夠經過 parent 標籤來導入要繼承的pom。

依賴繼承採用 dependencyManagement 用來統一管理,在子模塊中須要那個依賴,只須要寫groupId和artifactId就能夠,採用依賴管理既能夠有效的控制依賴,有能在必定程度上避免依賴衝突。

新建一個Maven項目mavenParent:

  •  packaging 設置爲pom
  •  properties 增長字段屬性 junit.version 
  •  dependencyManagement 管理依賴
<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.parent</groupId>
    <artifactId>mavenParent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <junit.version>4.11</junit.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
View Code

使用dependA來繼承mavenParent,修改dependA的pom.xml添加 parent 標籤來管理繼承:

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.maven.dependA</groupId>
    <artifactId>dependA</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>com.maven.parent</groupId>
        <artifactId>mavenParent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../mavenParent/pom.xml</relativePath>
    </parent>

</project>
View Code

至此dependA已繼承mavenParent。

構建WEB項目

項目的建立能夠參考上面的方式,這裏我說明下具體過程,建立Maven項目,模板使用: maven-archetype-webapp 

初始文件結構:

右鍵項目進行設置:

而後OK退出,開始配置tomcat

OK退出,啓動tomcat

經常使用命令

 mvn -v :查看maven版本

 mvn compile :編譯

 mvn test :測試

 mvn package :打包

 mvn clean :刪除target

 mvn install :安裝jar包到本地倉庫中

 mvn archetype:generate :自動構建目錄

 mvn dependency:tree :查看依賴

參考資料

https://maven.apache.org/index.html

https://www.imooc.com/learn/443

https://www.yiibai.com/maven/

https://www.cnblogs.com/1446358788-qq/articles/9597877.html

https://blog.csdn.net/shycx/article/details/7726600

https://blog.csdn.net/double_sweet1/article/details/79780308

https://www.cnblogs.com/bffc/p/3690993.html

http://how2j.cn/k/idea/idea-maven-web/1356.html

https://blog.csdn.net/wzx735481897/article/details/78158337

https://stackoverflow.com/questions/7600028/maven-error-in-opening-zip-file-when-running-maven

https://www.cnblogs.com/duanxz/p/5210189.html

https://www.cnblogs.com/luotaoyeah/p/3819001.html

相關文章
相關標籤/搜索