Maven基礎入門與核心知識


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

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

在多個開發團隊環境時,Maven可以設置按標准在非常短的時間里完成配置工作。由於大部分項目的設置都很簡單,並且可重復使用,Maven讓開發人員的工作更輕松,同時創建報表,檢查,構建和測試自動化設置。

概括地說,Maven簡化和標准化項目建設過程。處理編譯,分配,文檔,團隊協作和其他任務的無縫連接。 Maven增加可重用性並負責建立相關的任務。

安裝配置

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

下載壓縮包

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

解壓安裝

解壓壓縮包至目錄,我的安裝位置:D:\apache-maven-3.5.4

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

配置環境變量

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

MAVEN_HOME

PATH

依次確定,退出配置。

配置Maven

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

配置本地存儲庫

添加配置

<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


免責聲明!

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



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