zoukankan      html  css  js  c++  java
  • maven的理解和使用

    一、maven是什么?

       maven是项目管理工具

      

    二、maven为什么要用?

      在做开发的时候常常会用到外部的工具包(jar包),这就需要你一个一个的去他们的官网下工具包,然后在项目里依赖他们,比较的麻烦。

      maven有一个远程仓库,里面存了几乎所有要用到的工具包,只需在项目里配置maven要用到的pom.xml文件,项目首先自动会将这些工具包下载到本地仓库,然后项目就可以依赖到这些工具包,比较方便。

    三、maven怎么用?

      1、maven项目结构

      2、maven项目构建命令(命令运行与pom文件在同一目录)

    mvn clean;【清理】
    mvn clean compile/test/package/install;【编译/测试/打包/安装】
        * 执行后面的命令,前面的命令也会执行
        * 由<packaging>pom/jar/war</packaging>决定打包类型

      3、传递(<dependency></dependency>标签下)

    <scope></scope>常用取值
        compile:向下传递,其为默认值,大多数都为此值;
        test:不向下传递,测试类的包为此值;
        runtime:向下传递,jdbc驱动包为此值;
        provided:不向下传递,servlet-api包为此值;    
    不向下传递:gav下加
        <optional>true</optional>
    不接收传递:gav下加
        <exclusions>
          <exclusion>
            <groupId></groupId>
            <artifactId></artifactId>
          </exclusion>
        </exclusions>
    依赖优先级:
        直接依赖后者高于前者,直接依赖高于间接依赖,间接依赖前者高于后者

      4、maven继承

    直接继承:
        父工程:
            <packaging>pom</packaging>
        子工程:工程的gav不需要g和v
            <parent>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <relativePath>../父工程</relativePath>
            </parent>
    可选继承:
        1、父工程:
            <packaging>pom</packaging>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId></groupId>
                        <artifactId></artifactId>
                        <version></version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        2、子工程:子工程可选继承多个父工程,依赖的gav不需要v
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId></groupId>
                        <artifactId></artifactId>
                        <version></version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                    <dependency>
                        <groupId></groupId>
                        <artifactId></artifactId>
                        <version></version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                </dependencies>
            </dependencyManagement>

    四、父子工程三种启动方式

    父工程:mvn tomcat:run
    子工程:mvn tomcat:run,需要先安装其他子工程,可由父工程mvn install
    本地:本地tomcat运行

    五、示例

      1、父工程

    <?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></groupId>
        <artifactId></artifactId>
        <version></version>
        <packaging>pom</packaging>
    
        <parent>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
        </parent>
    
        <modules>
            <module></module>
        </modules>
    
        <properties></properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId></groupId>
                    <artifactId></artifactId>
                    <version></version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    </project>

      2、子工程

    <?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>
    
        <artifactId></artifactId>
    
        <parent>
            <artifactId></artifactId>
            <groupId></groupId>
            <version></version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId></groupId>
                <artifactId></artifactId>
            </dependency>
        </dependencies>
    
    </project>
  • 相关阅读:
    《深度剖析CPython解释器》16. Python函数机制的深度解析(第三部分): 闭包的底层实现以及调用
    《深度剖析CPython解释器》15. Python函数机制的深度解析(第二部分): 函数在底层是如何被调用的
    《深度剖析CPython解释器》14. Python函数机制的深度解析(第一部分): 函数在底层的数据结构、以及它的创建方式
    《深度剖析CPython解释器》13. 剖析Python的流程控制语句(if、for、while),以及异常捕获机制
    QT: QObject::connect()剖析
    C++ 点滴 (二)
    飞书有时黑屏的解决办法
    QT:显示器数量检测
    使用WinRar 制作自定义安装包
    QT-Mac:QT的SetText()在有些Mac OS系统上未显示
  • 原文地址:https://www.cnblogs.com/linding/p/12190388.html
Copyright © 2011-2022 走看看