Java · Maven

简介

Maven 是当前最受欢迎的 Java 项目管理构建自动化综合工具,主要功能:

  • 统一开发规范与工具
  • 统一管理 Jar 包

仓库

Maven 根据坐标寻找构件时,首先会查看本地仓库,若本地仓库存在此构件则直接使用;若本地仓库不存在此构件,就会去远程仓库查找,查找到下载到本地仓库再使用。

分类

  • 本地仓库:默认位置 ${user.home}/.m2/repository,可通过 settings.xml 自定义
  • 中央仓库:Maven 自带的远程仓库,http://repo2.maven.org/maven2/
  • 私服:一种特殊的远程仓库,为节省带宽和时间,应在局域网内架设一个私有仓库服务器,用其代理所有外部的远程仓库。

资源库

核心概念

坐标

groupId,artifactId,version 三个元素是项目的坐标,唯一的标识这个项目。

  • groupId:项目所在组,一般是组织或公司
  • artifactId:是当前项目在组中的唯一 ID,一般是项目名称
  • version:表示版本
1
2
3
4
<groupId>co.yixiang</groupId>
<artifactId>yshop</artifactId>
<packaging>pom</packaging>
<version>1.3</version>

打包

  • jar:默认打包方式,我们可以在其他工程的 pom 文件中去引用它
  • war:这种打包方式是将工程都部署在服务器上,用户通过浏览器直接访问
  • pom:用在父级工程或聚合工程中,用来做 jar 包的版本控制
1
2
3
4
5
6
7
8
9
10
11
<packaging>pom</packaging>

<modules>
<module>yshop-common</module>
<module>yshop-logging</module>
<module>yshop-system</module>
<module>yshop-tools</module>
<module>yshop-generator</module>
<module>yshop-api</module>
<module>yshop-mp</module>
</modules>

概念模型

生命周期

  • Clean:目的是清理项目

    • pre-clean
    • clean:删除前一个构建生成的所有文件
    • post-clean
  • Default:定义了真正构建时所需要执行的所有步骤

    • compile:编译
    • test:测试
    • package:使用已编译的代码,并将其打包成可部署格式
    • verify:运行检查以验证包是否有效
    • install:将该包安装到本地仓库
    • deploy:将项目输出部署到远程仓库
  • Site:目的是建立和发布项目站点

    • pre-site
    • site:生成项目的站点文档
    • post-site
    • site-deploy:将生成的站点文档部署到指定的 web 服务器

标准项目结构

核心思想:约束优于配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.
├── pom.xml
├── src
│   ├── main
│   │   ├── java: 源代码目录
│   │   └── resources: 资源目录
│   └── test
│   └── java: 测试代码目录
├── target
│   ├── classes: 主体输出目录
│   ├── generated-sources
│   ├── generated-test-sources
│   └── test-classes: 测试输出目录
└── yshop-system.iml

版本规范

  • SNAPSHOT:快照版本,开发测试阶段,不稳定版本
  • LATEST:某个特定构建的最新发布版本
  • RELEASE:正式发布版本,稳定版本