个人笔记:快速入门maven

maven仓库的秘密

maven仓库的分类

本地仓库

  • 本地仓库,顾名思义,就是 Maven在本地存储的地方。
  • Maven的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才会被创建
  • maven 本地仓库的默认位置:无论是windows 还是 linux,在默认C盘用户目录下,都会有一个 .m2/repository/ 的仓库目录,这就是 Maven仓库的默认位置。

在我们下载的安装包中, conf 文件夹下的 setting.xml 文件中,我们可以指定默认的本地仓库存储路径

<localRepository>D:\mavenplus-rep</localRepository>

在这里插入图片描述

远程仓库

中央仓库
  • 最核心的中央仓库开始,中央仓库默认是远程仓库,maven安装的时候,自带的就是中央仓库的配置,可以通过修改 setting.xml 文件,修改默认的中央仓库地址。
  • 中央仓库包括了绝大数流行的开源Java 构建,以及源码、作者信息、SCM、许可证信息等。一般来说,简单的 Java 项目依赖的构建都可以在这里下载到。

下方是默认的配置,我们不需要去做任何配置。
在这里插入图片描述

私服

通常是公司的服务器,如一家公司可能有多个团队,其中一个团队他们是使用到了某个jar包,那么就可以上传到私服上面,其他团队需要用的话,就可以去使用。

其他公共库

如何使用 IEDA简历一个 maven 项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

maven 项目的标准目录结构

在这里插入图片描述

maven 核心 pom 文件

什么是 pom

pom 代表项目对象模型,它是 maven 中工作的基础组成单位。它是一个 XML 文件,始终保存在项目的基本目录中的 pom.xml 文件中。pom包含的对象是使用 maven 来构建的。pom.xml 文件包含了项目的各种配置信息,需要特别注意,每个项目都只有一个 pom.xml 文件。

项目配置信息

在这里插入图片描述

  • project: 工程根标签
  • modelVerison:pom模型版本,maven2和3只能为4.0.0
  • groupId:这个是工程组的标识。它在一个组织或者项目中通常是唯一的。
  • artifactId: 这个是工程的标识。它通常是工程的名称。groupId 和 artifactId 一起定义了 一起定义了 atrifact 在仓库中的位置
  • version:工程的版本号。
  • packaging:定义 maven 项目的打包方式,有 JAR、WAR 和 EAR三种格式。

super pom

  • spuer pom 是 maven 默认的 pom。所有 pom 都继承自一个 super pom。(无论是否显示定义了这个 spuer pom)。 spuer pom 包含了一些可以被继承的默认设置。因此,当maven发现需要下载 POM 中的依赖时,它会到 super pom 中配置的默认仓库。
  • 使用下方命令开查看 super pom 默认配置:
mvn help:effective-pom

依赖配置信息

1、dependencies

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

2、parent

<parent>
	 <groupId>xd.class<groupId>
	 <artifactId>demo-parent</artifactId>
	 <relativePath>/</relativePath>
	 <version>1.0</version>
</parent>
  • relativePath: Maven 首先当前项目中找到父项目的 pom。然后在文件系统的这个位置 relativePath。最后在本地仓库,在远程仓库找。

3、model
有些maven项目会做成多个模块,这个标签用于指定当前项目包含的所有模块。之后对这个项目进行maven 操作,会让所有的子模块也进行相同操作。

<modules>
	 <module>com-a</module>
	 <module>com-b</module>
	 <module>com-c</module>
</modules>

4、properties

用于定义 pom 常量

<properties>
 <java.version>1.7</java.version>
</properties>

5、dependencyManagement

应用场景:

当我们项目模块很多的时候,我们依赖包的管理就会出现很多问题,为了项目的正确运行,必须让所有的子项目使用依赖项的同一个版本,确保应用各个项目的依赖和版本一致,才能保证测试和发布的是相同的结果。

使用的好处:

在父模型中定义后,子模块不会直接使用对应依赖,但是在使用相同依赖的时候可以不加版本号。这样的好处是,可以避免每个使用的子项目中都声明一个版本号,这样项升级或者切换另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改。

父项目
<dependencyManagement>
	 <dependencies>
		 <dependency>
		 <groupId>junit</groupId>
		 <artifactId>junit</artifactId>
		 <version>4.2.0</version>
		 <scope>test</scope>
		 </dependency>
	 </dependencies>
</dependencyManagement>
子项目1:
<dependency>
	 <groupId>junit</groupId>
	 <artifactId>junit</artifactId>
</dependency>
子项目2:
<dependency>
	 <groupId>junit</groupId>
	 <artifactId>junit</artifactId>
</dependency>
子项目3:
<dependency>
	 <groupId>junit</groupId>
	 <artifactId>junit</artifactId>
	 <version>5.0</version>
</dependency>

和dependencies的区别

  • dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项 (全部继承)
  • dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

maven 生命周期

什么是什么周期

  • Maven 的生命周期就是对所有的构建过程进行了抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
  • maven 的三个构建生命周期
    1. clean
      1) pre-clean 执行一些清理前需要完成的工作
      2) clean 清理上一次构建生成的文件
      3)post-clean 执行一些清理后需要完成的工作

    2. defalut
      1) validate: 验证工程是否正确
      2) compile: 编译项目的源代码
      3)test: 使用合适的单元测试框架来测试已编译的源代码。
      4)package: 把已编译的代码打包成可以发布的格式,比如jar或者war
      5)verifv: 运行所有检查,验证包是否有效
      6)install:安装到maven本地合库
      7)deploy: 部署到远程的仓库,使得其他开发者或者工程可以共享

    3. Site

常用的maven基本命令

  • 常用命令
    1) mvn validate 验证项目是否正确
    2) mvn package: maven打包
    3)mvn generate-sources 生成源代码
    4)mvn compile 编译
    5)mvn test-compile 编译测试代码
    6) mvn test 运行测试
    7)mvn verify 运行检查
    8) mvn clean 清理项目
    9)mvn install 安装项目到本地合库
    10)mvn deploy 发布项目到远程仓库
    11) mvn dependency:tree 显示Maven依赖树
    12)mvn dependency:list 显示Maven依赖列表

  • 常用参数
    1) -D 指定参数,如-Dmaven.test.skip=true 跳过单元测试
    2)-P 指定 Profile 配置,可以用于区分环境;

  • web相关命令
    1) mvn tomcat;run 广tomcat
    2) mvn jettv:run 户ietty
    3) mvn tomcat:deplov 运行打何部署

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月的小尾巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值