Maven是基于项目对象模型(pom),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。可以帮助我们更有效的管理项目,
是一套强大的自动化的管理工具,覆盖了编译、测试、运行、清理、打包,整个项目构建周期
bin目录包含mvn的运行脚本
boot目录包含一个类加载器的框架
conf是配置文件目录
Maven项目的目录结构
src
-main
-java
-package
-test
-java
-package
resources
pom.xml
<groupId>项目的包名</groupId>
<artifactId>模块名(建议用“项目名-model”进行标识)</artifactId>
<version>0.0.1SNAPSHOT</version>
cmd命令:mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
archetype插件 用于创建符合maven规定的目录骨架
使用方法cmd命令: 第一种: mvn archetype:generate
第二种: mvn archetype:generate -DgroupId=com.lc.maven04(组织名,公司网址的反写+项目名) -DartifactId=maven04-demo(项目名-模块名) -Dversion=1.0.0SNAPSHOT(版本号) -Dpackage=com.lc.maven04.demo(代码所存在的包名)
在maven世界中任何一个依赖、插件、项目构建的输出都称之为构件,所有构件均通过唯一坐标作为其标识
坐标
构件
仓库
本地仓库和远程仓库(在maven\lib\maven-model-builder.jar中有一个pom-4.0.0.xml文件,有一个全球中央仓库的链接,它封装了大部分开发所需要的jar包)
镜像仓库:修改位置maven\conf\settings.xml 查找mirrors
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
更改仓库位置
默认的仓库位置是在当前用户的目录中的C:\Users\Think\.m2\repository 若重装系统就没有了
更改方法:找到maven目录下的settings.xml <localRepository>D:/workspace/repo</localRepository>
Eclipse安装Maven插件: 将插件解压后复制到Eclipse目录中的dropins目录下
若eclipse配置的是jre而不是jdk那么需要添加jdk
进入eclipse目录下的eclipse.ini配置文件添加: -vm
D:\Program Files\Java\jdk1.8.0_144\bin\javaw.exe
然后将eclipse中的默认jre修改为jdk
完整的项目构建过程包括:清理、编译、测试、打包、集成测试、验证、部署
maven生命周期:clean 清理项目 分为 pre-clean(执行清理前的工作)、clean(清理上一次构建生成的所有文件)、post-clean(执行清理后的文件)
default 构建项目(最核心) 分为 compile、test、package、install
site 生成项目站点 分为pre-site(在生成项目站点前工作)、site(生成项目站点文档)、post-site(在生成项目站点后工作)、site-deploy(发布生成的站点到服务器上)
注意:Maven项目和我们的实际项目不是一一对应关系,Maven项目体现的是模块化的概念,因此一个实际的项目往往会被划分成很多的模块
pom.xml常用元素介绍:
project 是pom.xml的根元素 包含了pom的一些约束信息
modelVersion是一个固定的版本 必需的元素 指定了当前pom的版本
坐标的信息:<groupId>主项目的标识(反写的公司网址+项目名)</groupId>
<artifactId>模块的标识(项目名+模块名)</artifactId>
<!-- 第一个0表示大版本号 第二个0表示分支版本号 第三个0表示小版本号 -->
0.0.1
snapshot快照
alpha内部测试
beta公测
Release稳定
GA正式发布
<version>当前项目的版本号</version>
<!-- 默认是jar 还有war zip pom -->
<packaging></packaging>
<!--项目描述名,一般是产生项目文档时才产生-->
<name></name>
<!--项目地址-->
<url></url>
<!--项目描述-->
<description></description>
<!--开发人员列表-->
<developers></developers>
<!--许可证的信息-->
<licenses></licenses>
<!--组织信息-->
<organization></organization>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<!--依赖范围-->
<scope></scope>
<!--设置依赖是否可选 true false 默认是false-->
<optional></optional>
<!--排除依赖传递列表-->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--依赖的管理--> 不会被运行,不会被引入到实际的以来中,主要写在父类模块,由子类模块继承用的
<dependencyManagement>
<dependencies>
<dependency>
</dependency>
</dependencies>
</dependencyManagement>
<!--为构建行为提供相应的支持-->
<build>
<!--插件列表-->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!--通常用于子模块中对父模块的继承-->
<parent></parent>
<!--聚合运行多个的Maven项目-->
<modules>
<module></module>
</modules>
依赖范围<scope></scope>
Maven提供了三种classpath :编译、测试、运行
<scope>compile</scope>默认的范围 编译、测试、运行 都有效
<scope>provided</scope> 编译、测试 有效
<scope>runtime</scope> 测试、运行 有效
<scope>test</scope> 测试 有效
<scope>system</scope> 编译、测试 有效不可移植
<scope>import</scope>只用于<dependencyManagement>中表示从其它的pom中导入dependecy的配置
依赖传递
依赖具有传递性
依赖冲突
原则:1.短路优先
A->B->C->X(JAR)
A->D->X(JAR)
2.先声明先优先
如果路径长度相同,则谁先声明,先解析谁
聚合和继承
聚合:新建maven项目将pom文件中的packaging标签改为pom
然后添加<modules>
<module></module>
</modules>
继承:新建maven项目将pom文件中的packaging标签改为pom
<dependencyManagement>要继承的依赖</dependencyManagement>
子项目的pom中<parent>父类项目的坐标</parent>
是一套强大的自动化的管理工具,覆盖了编译、测试、运行、清理、打包,整个项目构建周期
bin目录包含mvn的运行脚本
boot目录包含一个类加载器的框架
conf是配置文件目录
Maven项目的目录结构
src
-main
-java
-package
-test
-java
-package
resources
pom.xml
<groupId>项目的包名</groupId>
<artifactId>模块名(建议用“项目名-model”进行标识)</artifactId>
<version>0.0.1SNAPSHOT</version>
cmd命令:mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
archetype插件 用于创建符合maven规定的目录骨架
使用方法cmd命令: 第一种: mvn archetype:generate
第二种: mvn archetype:generate -DgroupId=com.lc.maven04(组织名,公司网址的反写+项目名) -DartifactId=maven04-demo(项目名-模块名) -Dversion=1.0.0SNAPSHOT(版本号) -Dpackage=com.lc.maven04.demo(代码所存在的包名)
在maven世界中任何一个依赖、插件、项目构建的输出都称之为构件,所有构件均通过唯一坐标作为其标识
坐标
构件
仓库
本地仓库和远程仓库(在maven\lib\maven-model-builder.jar中有一个pom-4.0.0.xml文件,有一个全球中央仓库的链接,它封装了大部分开发所需要的jar包)
镜像仓库:修改位置maven\conf\settings.xml 查找mirrors
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
更改仓库位置
默认的仓库位置是在当前用户的目录中的C:\Users\Think\.m2\repository 若重装系统就没有了
更改方法:找到maven目录下的settings.xml <localRepository>D:/workspace/repo</localRepository>
Eclipse安装Maven插件: 将插件解压后复制到Eclipse目录中的dropins目录下
若eclipse配置的是jre而不是jdk那么需要添加jdk
进入eclipse目录下的eclipse.ini配置文件添加: -vm
D:\Program Files\Java\jdk1.8.0_144\bin\javaw.exe
然后将eclipse中的默认jre修改为jdk
完整的项目构建过程包括:清理、编译、测试、打包、集成测试、验证、部署
maven生命周期:clean 清理项目 分为 pre-clean(执行清理前的工作)、clean(清理上一次构建生成的所有文件)、post-clean(执行清理后的文件)
default 构建项目(最核心) 分为 compile、test、package、install
site 生成项目站点 分为pre-site(在生成项目站点前工作)、site(生成项目站点文档)、post-site(在生成项目站点后工作)、site-deploy(发布生成的站点到服务器上)
注意:Maven项目和我们的实际项目不是一一对应关系,Maven项目体现的是模块化的概念,因此一个实际的项目往往会被划分成很多的模块
pom.xml常用元素介绍:
project 是pom.xml的根元素 包含了pom的一些约束信息
modelVersion是一个固定的版本 必需的元素 指定了当前pom的版本
坐标的信息:<groupId>主项目的标识(反写的公司网址+项目名)</groupId>
<artifactId>模块的标识(项目名+模块名)</artifactId>
<!-- 第一个0表示大版本号 第二个0表示分支版本号 第三个0表示小版本号 -->
0.0.1
snapshot快照
alpha内部测试
beta公测
Release稳定
GA正式发布
<version>当前项目的版本号</version>
<!-- 默认是jar 还有war zip pom -->
<packaging></packaging>
<!--项目描述名,一般是产生项目文档时才产生-->
<name></name>
<!--项目地址-->
<url></url>
<!--项目描述-->
<description></description>
<!--开发人员列表-->
<developers></developers>
<!--许可证的信息-->
<licenses></licenses>
<!--组织信息-->
<organization></organization>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<!--依赖范围-->
<scope></scope>
<!--设置依赖是否可选 true false 默认是false-->
<optional></optional>
<!--排除依赖传递列表-->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--依赖的管理--> 不会被运行,不会被引入到实际的以来中,主要写在父类模块,由子类模块继承用的
<dependencyManagement>
<dependencies>
<dependency>
</dependency>
</dependencies>
</dependencyManagement>
<!--为构建行为提供相应的支持-->
<build>
<!--插件列表-->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!--通常用于子模块中对父模块的继承-->
<parent></parent>
<!--聚合运行多个的Maven项目-->
<modules>
<module></module>
</modules>
依赖范围<scope></scope>
Maven提供了三种classpath :编译、测试、运行
<scope>compile</scope>默认的范围 编译、测试、运行 都有效
<scope>provided</scope> 编译、测试 有效
<scope>runtime</scope> 测试、运行 有效
<scope>test</scope> 测试 有效
<scope>system</scope> 编译、测试 有效不可移植
<scope>import</scope>只用于<dependencyManagement>中表示从其它的pom中导入dependecy的配置
依赖传递
依赖具有传递性
依赖冲突
原则:1.短路优先
A->B->C->X(JAR)
A->D->X(JAR)
2.先声明先优先
如果路径长度相同,则谁先声明,先解析谁
聚合和继承
聚合:新建maven项目将pom文件中的packaging标签改为pom
然后添加<modules>
<module></module>
</modules>
继承:新建maven项目将pom文件中的packaging标签改为pom
<dependencyManagement>要继承的依赖</dependencyManagement>
子项目的pom中<parent>父类项目的坐标</parent>