Maven之(八)约定优于配置

maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已。maven有自己的一套默认配置,使用者除非必要,并不需要去修改那些约定内容。这就是所谓的“约定优于配置”。

文件目录

maven默认的文件存放结构如下:

每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/Java下编译所有的java文件,并把它的输出class文件存放到target/classes中。

对maven来说,采用"约定优于配置"的策略可以减少修改配置的工作量,也可以降低学习成本,更重要的是,给项目引入了统一的规范。

版本规范

maven有自己的版本规范,一般是如下定义:

 <majorversion>.<minor version>.<incremental version>-<qualifier>,

比如1.2.3-beta-01。要说明的是,maven自己判断版本的算法是major,minor,incremental部分用数字比较,qualifier部分用字符串比较,所以要小心 alpha-2和alpha-15的比较关系,最好用 alpha-02的格式。

maven在版本管理时候可以使用几个特殊的字符串 SNAPSHOT ,LATEST ,RELEASE 。比如"1.0-SNAPSHOT"。各个部分的含义和处理逻辑如下说明:

l   SNAPSHOT

如果一个版本包含字符串"SNAPSHOT",Maven就会在安装或发布这个组件的时候将该符号展开为一个日期和时间值,转换为UTC时间。例如,"1.0-SNAPSHOT"会在2010年5月5日下午2点10分发布时候变成1.0-20100505-141000-1。

这个词只能用于开发过程中,因为一般来说,项目组都会频繁发布一些版本,最后实际发布的时候,会在这些snapshot版本中寻找一个稳定的,用于正式发 布,比如1.4版本发布之前,就会有一系列的1.4-SNAPSHOT,而实际发布的1.4,也是从中拿出来的一个稳定版。

l   LATEST

指某个特定构件的最新发布,这个发布可能是一个发布版,也可能是一个snapshot版,具体看哪个时间最后。

l   RELEASE

指最后一个发布版。

Maven变量

除了在setting.xml以及pom.xml当中用properties定义的常量,maven还提供了一些隐式的变量,用来访问系统环境变量。


类别


例子


内置属性


${basedir}表示项目根目录,即包含pom.xml文件的目录

${version}表示项目版本

${project.basedir}同${basedir}

${project.baseUri}表示项目文件地址

${maven.build.timestamp}表示项目构件开始时间


setting属性


${settings.localRepository }表示本地仓库路径


POM属性


${project.build.directory}表示主源码路径

${project.build.sourceEncoding}表示主源码的编码格式

${project.build.sourceDirectory}表示主源码路径

${project.build.finalName}表示输出文件名称

${project.version}表示项目版本,与${version}相同


Java系统属性


${user.home}表示用户目录

${java.version}表示Java版本


环境变量属性


${env.JAVA_HOME}表示JAVA_HOME环境变量的值

${env.HOME }表示用户目录


上级工程变量


上级工程的pom中的变量用前缀 ${project.parent } 引用。上级工程的版本也可以这样引用: ${parent.version }

时间: 2024-08-12 00:36:01

Maven之(八)约定优于配置的相关文章

SpringMVC介绍之约定优于配置

转自:http://haohaoxuexi.iteye.com/blog/1774603 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后面对SpringMVC的约定优于配置的介绍之后你就会明白了. SpringMVC对约定优于配置的支持主要表现在三个方面,Model.View和Controller. Model:SpringMVC对Model的约定优于配置的支持是基于ModelMa

“约定优于配置”与Magento改造尝试四之block、helper和model载入

暂定本章为这个系列最后一章,还是继续沿用模块的别名(alias)概念 <modules> <Mage_Wishlist> <version>1.6.0.0</version> <alias>wishlist</alias> </Mage_Wishlist> </modules> 看下Magento通常是怎么定义block.helper和model的别名的 <blocks> <wishlist&

Struts2 ActionWildcard(通配符配置)约定优于配置

1.新建web Project:Struts2_ActionWildcard2.新建以下的文件:项目图: src: StudentAction.java TeacherAction.java struts.xml WebRoot: index.jsp Studentadd_success.jsp Studentdelete_success.jsp Teacher_add_success.jsp Teacher_delete_success.jsp 3.以下为项目中各文件的代码: (1)strut

Spring 4 官方文档学习(十一)Web MVC 框架之约定优于配置

当返回一个ModelAndView时,可以使用其addObject(Object obj)方法,此时的约定是: An x.y.User instance added will have the name user generated. An x.y.Registration instance added will have the name registration generated. An x.y.Foo instance added will have the name foo gener

maven学习系列2----maven简单配置

maven几个概念 1,POM(Project Object Model,项目对象模型), 描述项目如何构建.声明项目依赖等.以xml形式来编写命名为pom.xml,一个maven项目对应一个pom.xml.相当于Ant的build.xml文件,gradle的build.gradle文件. 2,构件, 使用maven工具可以将项目编译成很多种类型的包,常用的是jar/war/pom类型的包,这些包在maven的世界中就叫构件. 3,仓库, 统一存放所有maven项目共享的构件的地方.以group

#001 约定大于配置

什么叫做约定大于配置? 约定优于配置是一个简单的概念. 系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置. 在大部分情况下,你会发现使用框架提供的默认值会让你的项目运行的更快. 零配置并不是完全没有配置,而是通过约定来减少配置, 减少 XML 开发一个组件,最好提供一些默认值,也就是所谓的约定,如果需要不同的就使用 配置 ,来具体配置组件的内容. 来自为知笔记(Wiz)

开发原则之约定大于配置

开发过程中处处用到了"约定大于配置"的原则,甚至团队开发规范.开发编译环境等等也是要大家约定来执行的.以Java构建为例,从ant到maven再到gradle都是更好更方面的实现了"约定大于配置"的思想. 在ant和bat时代,经常要为每个项目写或修改脚本,即便项目主要目录结构也要在代码里体现. 到maven时代,通过约定简化了很多东西:pom.xml所在的目录应为项目的根目录,假设该目录为${proj-dir},那么Maven有以下假设: ${proj-dir}/

Maven 和IDEA的初始配置

1.首先要下载maven 不知道你们要不要挂代理 反正我是挂了.如果有人打不开maven的话,这里是下载地址.Maven 3.3.zip 2.配置环境 settings.xml 首先配置下系统环境 把bin加入path 然后打开cmd 输入mvn –version看看有没有正确输出Maven的版本 接下来配置maven目录下conf下的settings.xml 加入<localRepository>标签,这个标签的作用就是配置本地仓库,就是存放maven下载的那些jar包的地方 然后找到<

eclipse maven plugin 插件 安装 和 配置

环境准备: eclipse(Helios) 3.6 maven 3.0.4 maven3 安装: 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目,目前最新版本是 3.0.4,我用的也是这个. 首先去官网下载 Maven:http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.4-bin.tar.gz 下载完成之后将其解压,我将解压后的文件夹重命名成 mave