Maven 命令与工程结构

184 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

常用的 Maven 命令

执行与构建过程相关的 Maven 命令, 必须进入 pom.xml 文件所在的目录.

常用命令:

  • `mvn compile            编译主程序
  • mvn test                   执行测试
  • mvn test-compile    编译测试程序
  • mvn clean               清理
  • mvn package           打包
    • 指定环境打包 mvn package -P dev
  • mvn install               安装, 执行此命令可以把我们自己的程序放置在本地仓库.
  • mvn dependency:tree     查看依赖树, 解决依赖冲突问题.
  • mvn dependency:tree --> tree.txt  导出依赖树到 txt 文件.

标准的 Maven 工程

标准的目录结构

这是 Maven 项目标准的目录结构:

Maven 要负责我们这个项目的自动化构建, 以编译为例, Maven 想要自动进行编译, 那么他必须知道 Java 源文件在哪里. 那么有两种办法:

  • 以 xml 配置文件的方式告诉框架.
  • 遵守框架内部已经存在的定义.

pom.xml

POM Project Object Model 项目对象模型.

  • pom.xml 文件是 Maven 工程最核心的配置文件, 构建过程相关的一切设置都在这个文件中.
  • pom.xml 包含了项目构建的信息, 包括项目的信息, 项目的依赖等.
  • pom.xml 文件是可以继承的, 大型项目中, 子模块的 pom.xml 一般都会继承于父模块的 pom.xml.

Maven 的坐标

使用 gav 向量在 Maven 的仓库中唯一的确定一个 Maven 工程.

  • groupId : 公司名倒序 + 项目名
  • artifactId : 当前项目的模块名
  • version : 当前模块的版本

举例 :

<project xxx>
    <!-- 所有的 Maven 项目都必须配置这四个配置项 -->
    <!-- 版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!--groupId 公司名倒序 + 项目名-->
    <groupId>it.sgy.pyg</groupId>
    <!-- 当前项目的模块名 -->
    <artifactId>order</artifactId>
    <!-- 当前模块的版本 -->
    <version>0.0.1-SNAPSHOT</version>
</project>

如何通过坐标找到 Maven 仓库中的 jar 包?

  • 将 gav 三个向量连接起来. it.sgy.pyg + order + 0.0.1-SNAPSHOT
  • 把连接起来的字符串作为目录结构, 到仓库中查找. it/sgy/pyg/order-0.0.1-SNAPSHOT.jar

注意:  我们自己的 Maven 工程必须执行安装操作才能进入仓库, 安装的命令是 : mvn install

Maven 仓库管理

Maven 仓库 : 用来统一存储所有 Maven 依赖的位置就是仓库.

Maven 仓库布局 : 根据 Maven 坐标定义每个构建在仓库中唯一存储路径:groupId/artifactId/version/artifactId-version.packaging

仓库中保存的内容 :

  • Maven 自身需要的插件
  • 第三方的框架或者工具的 jar 包
  • 我们自己开发的 Maven 程序.

仓库的分类 :

  • 本地仓库. 每个用户只有一个本地仓库, 默认是在 ~/.m2/repository/, ~代表的是用户目录.
  • 远程仓库

中央仓库:Maven 默认的远程仓库, URL地址:mvnrepository.com/

中央仓库镜像 : 为了分担中央仓库的流量, 提升用户访问速度.

私服 : 搭建在局域网环境中, 为局域网范围内的所有的 Maven 工程服务.