目录规范
Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 | 说明 |
---|---|
demo-test | 项目名称 |
src/main/java | 项目源码目录 |
src/main/resources | 项目资源文件目录,包括项目用到的静态文件、配置文件等 |
src/test/java | 测试代码源码目录 |
src/test/resources | 测试代码用到的资源文件目录 |
target | Maven编译打包后的文件目录 |
pom.xml | Maven项目对象模型文件(依赖和编译打包配置文件) |
版本规范
Maven项目版本规范按如下结构进行定义:
<major version>.<minor version>.<incremental version>-<qualifier>
- [主版本号] major version 表示大版本号,重大更新或改版升级,一般不与历史版本兼容
- [次版本号] minor version 表示中版本号,一般有新增功能时,会改变此版本号,保持相对兼容性
- [增量版本号] incremental version 表示小版本号,修复历史版本BUG,完全兼容历史版本
- [版本状态] 可选值,表示当前版本的状态。可选值有:SNAPSHOT、RELEASE、LATEST等
其中每个节点都可以抛弃,但至少包含一个节点,如可以为 version 命名为 1
SNAPSHOT 版本
快照版本,一般在开发阶段使用,我们在提交发布 SNAPSHOT 版本时(mvn deploy
),Maven会自动提交一个带时间戳的版本号,并自动发布到私服的快照版本库中。当我们每次执行编译打包时,Maven 如果发现有依赖版本状态为 SNAPSHOT 的依赖时, 都会自动从远程仓库更新到 SNAPSHOT 的最新版本(比较lastUpdated)
RELEASE 版本
释放版本,这是一个稳定版本。这个版本的依赖在编译打包项目时,如果本地仓库中有依赖包,则不会从远程仓库更新下载(比较版本号)
LATEST 版本
指最新发布的,可能是一个 RELEASE 版,也可能是一个 SNAPSHOT 版,按最新发布时间选择
约定配置变量
变量 | 说明 |
---|---|
${basedir} | 项目根目录,包含有 pom.xml 文件的目录 |
${version} | 项目的版本号 |
${project.basedir} | 项目更路径,同${basedir} |
${maven.build.timestamp} | Maven构建项目的开始时间 |
${settings.localRepository } | 本地Maven仓库地址 |
${project.build.directory} | 项目源码的路径 |
${project.build.sourceEncoding} | 源码的编码格式 |
${project.build.sourceDirectory} | 项目源码的路径 |
${project.build.finalName} | 编译输出文件的名称 |
${project.version} | 项目的版本号 |
${user.home} | 用户目录 |
${java.version} | Java版本号 |
${env.JAVA_HOME} | 环境变量中配置的JAVA_HOME的值 |