清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Maven

    • 简介
    • 基本概念
    • 创建 Maven 工程
    • 生命周期
    • 依赖范围
    • 依赖传递
    • 继承
    • 聚合
    • Maven 私服
    • 打包配置
    • Tomcat 插件
    • FAQ

基本概念

gavp

在 Maven 项目的 pom.xml 文件中,我们会看到 gavp 的配置,即 groupId、artifactId、version、packaging。这些配置是 Maven 项目的基本概念。其中。前三个是必须的,packaging 是可选的。这四个属性主要用于标识项目在 Maven 仓库中的唯一性,有时候,我们也把这四个属性称为 Maven 项目的坐标。

gavp 遵循以下规则:

groupId

项目组织或者公司的唯一标识符,通常是公司的域名倒序,例如:com.example。

artifactId

产品名称或者模块名,例如:search。

version

参考

Version Order Specification

产品的版本号,格式为 主版本.次版本.修订号,例如:1.0.0。

  • 主版本:当你做了不兼容的 API 修改时,增加主版本号。
  • 次版本:当你做了向下兼容的功能性新增时,增加次版本号(新增类、接口等)。
  • 修订号:当你做了向下兼容的问题修正时,增加修订号(修复 bug)。

packaging

打包类型。

  • jar:Java 项目的默认打包类型。
  • war:Web 项目的打包类型。
  • pom:不会进行打包,只是作为父项目的配置文件。

项目结构

参考

Standard Directory Layout

Maven 项目约定了一种标准的目录结构,我们创建的项目应该尽可能地符合这个结构。但是,如果不能,可以在 pom.xml 中覆盖这些设置。

目录/文件说明
src/main/java源代码目录
src/main/resources资源文件
src/main/filters资源过滤文件
src/main/webappWeb 项目的 Web 应用目录
src/test/java测试代码目录
src/test/resources测试资源文件
src/test/filters测试资源过滤文件
src/it集成测试(主要用于插件)
src/assembly描述如何将项目组装成一个发布包
src/site项目站点的源文件
LICENSE.txt项目的许可证
NOTICE.txt项目所依赖的库所要求的注意事项和属性
README.txt项目的简介
pom.xml项目的配置文件

该结构只有两个子目录:src 和 target。这里唯一需要的其他目录是 CVS、.git 或 .svn 等元数据,以及多项目构建中的任何子项目(每个子项目都遵循上面提到的目录结构)。src 目录包含了所有的源代码和资源文件,它包含每种类型的子目录:main 用于主要构建的代码和资源,test 用于单元测试代码和资源、站点等。target 目录包含了所有的输出文件。

在 main 和 test 目录中,有一个用于 java 语言的目录(在该目录下存在正常的包层次结构,例如 com.example),还有一个用于 resources 的目录(在给定默认资源定义的情况下复制到目标 classpath 的结构)。

看起来的目录结构如下:

${basedir}
|-- src
|	|-- main
|	|	`-- java
|	|	`-- resources
|	|	`-- filters
|	|	`-- webapp
|	|-- test
|	|	`-- java
|	|	`-- resources
|	|	`-- filters
|	|-- it
|	|-- assembly
|	|-- site
|-- pom.xml
`-- LICENSE.txt
`-- NOTICE.txt
`-- README.txt
想要编辑此页?
上次更新: 2024/2/10 20:59
贡献者: Junfeng Dai
←简介创建 Maven 工程→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号