最权威最简明的maven 使用教程

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

核心功能

  • 依赖管理:Maven工程对jar包的管理过程。

一个复杂的项目将会包含很多依赖,也有可能包含依赖于其它构件的依赖。这是Maven最强大的特征之一,它支持了传递性依赖(transitive dependencies)。假如你的项目依赖于一个库,而这个库又依赖于五个或者十个其它的库(就像Spring或者Hibernate那样)。你不必找出所有这些依赖然后把它们写在你的pom.xml里,你只需要加上你直接依赖的那些库,Maven会隐式的把这些库间接依赖的库也加入到你的项目中。Maven也会处理这些依赖中的冲突,同时能让你自定义默认行为,或者排除一些特定的传递性依赖。

  • 项目构建:mvn tomcat:run

仓库

本地仓库、远程仓库(私服)、中央仓库

本地仓库默认为{user.home}.m2.repority,可以在配置文件中修改

Maven项目标准目录结构

核心代码部分:src/main/java

配置文件部分:src/main/resources

测试代码部分:src/test/java

测试配置文件:src/test/resources

页面资源(包含js,css,图片资源等):src/main/webapp

Maven常用命令

clean:删除项目中已经编译好的信息,删除target目录

compile:Maven工程的编译命令,用于编译项目的源代码,将src/main/java下的文件编译成class文件输出到target目录下。

test:使用合适的单元测试框架运行测试。

package:将编译好的代码打包成可分发的格式,如JAR,WAR。

install:安装包至本地仓库,以备本地的其它项目作为依赖使用。

deploy:复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)。

每一个构建项目的命令都对应了maven底层一个插件。

Maven命令package、install、deploy的联系与区别

mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。

mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。

mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

主要区别:
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。

install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。

deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。 

Maven生命周期

清理生命周期:运行mvn clean将调用清理生命周期 。

默认生命周期:是一个软件应用程序构建过程的总体模型 。

compile,test,package,install,deploy

站点生命周期:为一个或者一组项目生成项目文档和报告,使用较少。

Maven概念模型

项目对象模型(Project Object Model,POM),对应着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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.shangguan</groupId>
    <artifactId>concurrency</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>concurrency</name>
    <description>Demo project for Spring Boot</description>

项目运行所依赖的jar包信息,如:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

<groupId>:团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

<artifactId>:项目的唯一标识符

version:项目的版本

package:项目的类型,默认是jar,描述了项目打包后的输出 。

项目运行环境信息,比如:jdk,tomcat信息

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

依赖范围

compile:默认的范围,编译测试运行都有效。

provided:编译和运行有效,最后在运行的时候不会加入。官方举了一个例子。比如在JavaEE web项目中我们需要使用servlet的API,但是Tomcat中已经提供这个jar,我们在编译和测试的时候需要使用这个api,但是部署到tomcat的时候,如果还加入servlet构建就会产生冲突,这个时候就可以使用provided。

runtime:测试和运行有效。

test:测试有效。

system:与本机系统关联,编译和测试时有效。

import:导入的范围,它只在使用dependencyManagement中,表示从其他pom中导入dependecy的配置。

Maven依赖冲突

每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,因而可能造成一个我们不想要的类包的载入,严重的甚至会引起类包之间的冲突。

要解决这个问题,首先就是要查看pom.xml显式和隐式的依赖类包,然后通过这个类包树找出我们不想要的依赖类包,手工将其排除在外就可以了。 例如:

<exclusions>
    <exclusion>
        <artifactId>unitils-database</artifactId>
        <groupId>org.unitils</groupId>
    </exclusion>
</exclusions>  

原文地址:https://www.cnblogs.com/aibabel/p/11687646.html

时间: 2025-02-01 05:49:42

最权威最简明的maven 使用教程的相关文章

Maven入门教程

Maven入门教程一.maven简介 Maven是一个项目管理工具 它包含: 一个项目对象模型 (Project Object Model) 一组标准集合 一个项目生命周期(Project Lifecycle) 一个依赖管理系统(Dependency Management System) 用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑 项目结构: 源代码放在src/main/java 源代码的资源文件放在src/main/resources 测试代码放在sr

apache maven安装教程

一.准备工作 a.  安装jdk1.7以上版本 b. 下载maven安装包   官方下载地址:http://maven.apache.org/download.cgi 百度网盘下载地址: https://pan.baidu.com/s/1EI2CytxsnelXfZ-XFYSizA   (maven3.3.3) 二.解压Maven安装包 解压到指定的目录,我解压到了D:\tool\apache-maven-3.3.3 目录下 三.配置Maven环境变量 进入 我的电脑----属性----高级系统

Maven代理教程

明确代理服务器地址及端口,比如 proxy.supremehover.com:8080 找到maven目录下的conf\settings.xml并打开,在proxies节点下添加proxy <proxies> <proxy> <id>proxyHttp</id> <active>true</active> <protocol>http</protocol> <username>username<

MyEclipse&amp;Maven项目管理教程:创建Java Maven依赖项目(转载)

本教程介绍了如何通过MyEclipse Web项目,或者其他任何Maven项目来创建一个通用的Java/Maven项目.这些步骤包括基础的创建和使用Maven依赖.您将学习到: 创建一个Maven实用项目 为一个项目添加依赖关系 添加实用项目作为一个依赖关系 没有MyEclipse?立即下载 1. 创建一个Maven实用项目 Maven实用项目将被现有的Maven项目消耗. (1)创建一个Maven项目支持消耗在本教程中创建的项目. (2)选择File>New>Project,在搜索栏中输入M

Maven基础教程

教程:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033788.html 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.

maven安装教程

1. 安装maven前需要先安装java,并设置JAVA_HOME环境变量.(详见jdk安装教程)2. 将apache-maven-3.0.5-bin.zip放到d:\teamwork中,点击右键,解压到当前文件夹中.3. 右键点击我的电脑,点属性,打开系统属性对话框,点高级选项卡中的环境变量 4. 点击系统变量的新建按钮 5. 填入如下信息后点击确定 6. 找到变量path,双击打开 7. 将“%M2_HOME%\bin;”加入到变量值的最左侧(注意别落下分号),点击确定 8. 再点击确定关闭

MAVEN配置教程

感谢网址:http://wiki.jikexueyuan.com/project/maven/environment-setup.html 1.JAVA安装检查并配置变量 2.下载MAVEN文件并解压 从以下网址下载 Maven 3.2.5:http://maven.apache.org/download.html 3.设置MAVEN环境变量 .... 此教程在我电脑未出现问题,直接看教程吧 PS:发现这个极客学院网站不错,已收藏. 原文地址:https://www.cnblogs.com/wo

Maven简单教程(一)

       最近新项目得用到Maven,所以在网上在查阅的很多资料,却陷入了各种复杂中去.我一直觉得学习一门新的技术,首先先知道为什么学?其次是,最快的速度入门(自己能跑一个简单的demo).其他的在工作中碰到了在Google就好.不能学了一大堆,最后发现根本没用到,时间久了又都忘了. 问题:为什么学Maven?        解决了:团队开发,需要加载各种包,各个成员之间同步问题. Maven 是一个项目管理和构建自动化工具.Maven把项目依赖的包和版本,利用配置文件管理起来,将项目与依赖

CentOS6.x maven安装教程

下载maven 官网: 下载地址http://maven.apache.org/download.cgi 解压 tar -zxvf apache-maven-3.2.3-bin.tar.gz 安装 cp apache-maven-3.2.3 /usr/local/maven cd usr/local/maven ln -s /usr/local/apache-maven/-3.2.3 maven_default cd /usr/sbin ln -s /usr/local/maven_defaul