个人笔记:快速入门maven

零基础快速入门maven

  • maven仓库的秘密
    • maven仓库的分类
      • 本地仓库
      • 远程仓库
        • 中央仓库
        • 私服
      • 其他公共库
  • 如何使用 IEDA简历一个 maven 项目
  • maven 项目的标准目录结构
  • maven 核心 pom 文件
    • 什么是 pom
    • 项目配置信息
    • super pom
    • 依赖配置信息
  • maven 生命周期
    • 什么是什么周期
  • 常用的maven基本命令

maven仓库的秘密

maven仓库的分类

本地仓库

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

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

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

个人笔记:快速入门maven_第1张图片

远程仓库

中央仓库

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

下方是默认的配置,我们不需要去做任何配置。
个人笔记:快速入门maven_第2张图片

私服

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

其他公共库

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

个人笔记:快速入门maven_第3张图片
个人笔记:快速入门maven_第4张图片
个人笔记:快速入门maven_第5张图片

maven 项目的标准目录结构

个人笔记:快速入门maven_第6张图片

maven 核心 pom 文件

什么是 pom

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

项目配置信息

个人笔记:快速入门maven_第7张图片

  • 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 运行打何部署

你可能感兴趣的:(笔记,maven,java)