Maven

Maven,第1张

Maven 为啥使用 Maven
  • jar 包管理(添加、获取、自动处理 jar 包依赖关系及冲突)
    手动 jar 包管理很麻烦,需要自行到网上下载 jar 包,添加到项目的 lib 目录生效(Maven 只需要添加到 pom 即可);如果一个 jar 包又依赖很多其他 jar 包,又得手动找很多个(Maven 能自动下载);如果项目 A 依赖 B,B 依赖 C,且 B 和 C 依赖同一个 xxx.jar,但版本不同,那么项目 A 依赖哪个版本呢?冲突(Maven 会自动处理冲突,最短路径者优先);如果项目 A 依赖 B 和 C,且 B 和 C 依赖同一个 xxx.jar,但版本不同,那么项目 A 依赖哪个版本呢?冲突(Maven 会自动处理冲突,先声明者优先)
  • 项目模块化管理
  • 项目自动化构建(查看生命周期,清理-编译-打包-……)
Maven 使用 安装

下载压缩包,解压并配置环境变量即可!注意 Maven 是 Java 开发的,依赖 JDK。

配置(conf/settings.xml)

本地仓库

/path/to/local/repo

镜像仓库,把国外的仓库 jar 包复制一份到国内(提速),如下阿里云镜像仓库


    nexus-aliyun
    central
    Nexus aliyun
    http://maven.aliyun.com/nexus/content/groups/public


idea 集成 Maven

Lifecycle

常见命令(可点击下面各命令,也可以在控制台执行 mvn 下面各命令)

clean:清除之前编译好的东西,target 包
validate:检验项目目录结构是否正确
compile:编译(main 目录里的)
test:编译并运行测试包下的内容
package:打包
install:安装到本地仓库

Maven 核心概念 pom

Project Object Model:项目对象模型,将 Java 工程的相关信息封装为对象作为便于 *** 作和管理的模型。

约定的目录结构

约定 > 配置 > 编码(思想),比如 Springboot 提供大量默认配置(约定),大幅度减少配置量(配置文件报错难以定位),提高开发速度。

坐标

确定 Maven 仓库中唯一确定的 jar 包
groupId:公司域名倒序 + 项目名称
artifactId:项目的模块名称
version:模块的版本

依赖生效范围

compile:(默认)main 和 test 目录下的代码都可以使用,部署到 Tomcat 服务器上运行时该 jar 包会放在 WEB-INF 的 lib 目录下
test:仅 test 目录下的代码可以使用,部署到 Tomcat 服务器上运行时该 jar 包不会放在 WEB-INF 的 lib 目录下
provided:main 和 test 目录下的代码都可以使用,部署到 Tomcat 服务器上运行时该 jar 包不会放在 WEB-INF 的 lib 目录下(原因是,比如 Tomcat 自带的 jar 包,像 servlet)

compile:编译 classpath + 测试 classpath + 运行 classpath
test:测试 classpath
provided:编译 classpath + 测试 classpath
runtime:测试 classpath + 运行 classpath

依赖的传递

如果项目 A 依赖 B,B 依赖 C,也就是 A 间接依赖 C,A 可以访问到 C 中 compile 的依赖包,C 中 test/provided 的依赖包对 A 不可见

依赖的排除

    xxx.xxx.project
    module
    1.0-SNAPSHOT

    
    
        
            xxx
            xxx
        
    


统一管理 jar 包版本

    2.0.0.RELEASE



    org.springframework
    spring-webmvc
    ${spring.version}


继承

父工程的打包方式为 pom,删除 src 目录

xxx
Parent
pom
1.0-SNAPSHOT

父工程统一管理 jar 包版本,子工程中也要引入相应 jar 包,不用写版本,若写版本会覆盖掉父工程对应的版本。如果不用 dependencyManagement,子工程不用引入对应的包就行!


    
        
            xxx
            xxx
            1.0
            xxx
        
    


    子工程1
    子工程2

子工程


    xxx
    Parent
    1.0-SNAPSHOT

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4660942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存