官网描述:
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
Maven 是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM) 概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
maven将项目看做一个对象,将项目的相关信息封装为对象,便于操作和管理。
maven项目对象的部分基础属性:
① 项目坐标
项目坐标用来定位一个项目在仓库中的位置。包含groupId, artifactId, version。一个Maven坐标是一个地址。当一个项目通过依赖,插件或者父项目引用和另外一个项目关联的时候,Maven通过坐标来精确定位一个项目。
② 打包方式。
这个属性决定我们执行maven的package方法后,项目会被打包成什么文件。
③ 其他属性
如编码方式等。
④ 项目依赖列表。
这个属性的值是一个数组,里边有一些其他项目的坐标。
⑤ 构建插件列表。
这个属性是一个数组,定义项目需要的一些插件,比如源码打包工具、web容器。
maven项目对象的部分方法:
①mvn compile 编译项目
②mvn package 打包项目
③mvn clean 清除之前编译和打包产生的文件
④mvn install 将项目安装到本地仓库
⑤mvn test 运行测试代码
构建:从源码到成品(通常是jar包或war包的形式)的过程。
构建环节:
环节 | 功能 |
---|---|
清理 | 将以前编译得到的class字节码文件删除,为下一次编译做准备 |
编译 | 将java源程序编程成class字节码文件 |
测试 | 自动测试,自动调用Junit程序 |
报告 | 测试程序执行的结果 |
打包 | 动态web工程打包war包,java工程打jar包 |
安装 | 将打包得到的文件复制到"仓库"中的指定位置 |
部署 | 将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行 |
这些环节,maven都可以一个命令完成,即自动构建。
官网下载地址:http://maven.apache.org/download.cgi
选择 Binary zip 类型的版本
下载完成后,解压。
在环境变量–>系统变量–>path中,加入maven安装目录下的bin目录路径。
测试安装成功:cmd中执行mvn -v
出现maven版本信息,即为安装成功。
maven 以仓库的形式管理jar包,仓库分为中央仓库(浏览器可访问https://mvnrepository.com/),和本地仓库。
本地仓库方便离线使用,从中央仓库下载的jar包都会放到本地仓库。
maven默认本地仓库目录放在c盘,为了方便查看以及减少C盘负荷,我们需更改本地仓库位置:
D:\E\Maven\local
在原文件中的 53 行有localRepository配置,但被注释掉了,我们可以将其复制到注释外面,然后修改其值。
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=demo
创建一个maven项目,项目groupId 为com.chinasofti.build,artifactId为 demo。
mvn clean compile exec:java -Dexec.mainClass=“com.chinasofti.build.App”
编译项目(在编译前,需先清理项目)
src 下放的是源码
target 下放的是编译文件
1、Maven 要负责项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 的源文件保存在哪里,这样约定之后,不用我们手动指定位置,Maven 能知道位置,从而帮我们完成自动编译。
2、遵循 约定>>>配置>>>编码。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了劳动力,也能防止出错。
③、pom.xml 文件
Project Object Model 项目对象模型,Maven 的核心配置文件,pom.xml,与构建过程相关的一切设置都在这个文件中进行配置。
maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。
生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。
goal是maven里定义任务的最小单元,相当于ant里的target。 可以理解maven为一个插件的容器,每个插件绑定到某个goal执行。
net.sf.json-lib
json-lib
2.4
jar
jdk15
标签 | 解释 |
---|---|
dependency | 表示要使用一个依赖 |
groupId | 指定依赖的组织名 |
artifactId | 指定依赖的项目名 |
version | 指定依赖的版本名 |
type | 指定依赖的类型 |
classifier | 指定jdk版本 |
Only compile and runtime scopes are transitive
A->B->C
简单传递依赖:A->C
A->B-C(0.1)
A->C(0.2)
最短路径优先原则: A->C(0.2)
A->B->C(0.1)
A->E->C(0.2)
第一声明优先原则:最终依赖C(0.1)
2.5
org.springframework
spring-core
${spring.version}
org.hibernate
hibernate-validator
4.3.1.Final
slf4j-api
org.slf4j