Maven是一个项目管理工具,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven的作用:
maven项目有约定俗成的项目结构,叫做约定的目录结构。
一个maven项目是一个文件夹。
例如在一个名为Hello的项目中:
Hello 项目文件夹
\src
\main 主程序目录,包含完成项目功能的代码和配置文件
\java 源代码,包括包和相关的类定义
\resources 配置文件
\test 放置测试程序代码和配置文件的目录
\java 测试代码
\resources 测试程序需要的配置文件
\pom.xml maven的配置文件,核心文件
使用 maven compile,完成后与src同层会多出一个target目录
Maven把一个项目的结构和内容抽象成一个模型,操作模型就是操作项目。通过操纵在xml文件以方便进行构建和描述。
4.0.0
com.bjpowernode
ch01-maven
1.0-SNAPSHOT
1.8
1.8
1.8
<!-- 坐标 -->
<groupId>com.bjpowernode</groupId> //组织名称,代码:公司,团体或单位标识,这个值通常是公司名称的倒写;也可以是域名倒写加项目名称
<artifactId>ch01-maven</artifactId> //项目名称:如果groupId中有项目,此时当前的值就是子项目的名字,是唯一的。
<version>1.0-SNAPSHOT</version> //版本名称:使用3位数字组成,例如:主版本号.次版本号.小版本号
/*坐标组成包括:groupId,artifactId,version,这三个值,是资源的唯一标识,在maven中每个资源都是坐标,坐标是唯一的简称gav*/
<packaging>jar</packaging>
/*packaging 项目打包的类型, 有jar ,war, ear, pom等等 默认是jar*/
1.每个maven项目,都需要有一个自己的gav
2.管理依赖,需要使用其他的jar ,也需要使用gav作为标识。
搜索坐标的地址: https://mvnrepository.com/
1.依赖:项目中要使用的其他资源(jar)。
需要使用maven表示依赖,管理依赖。 通过使用dependency和gav一起完成依赖的使用
需要在pom.xml文件中,使用dependencies 和dependency, 还有gav 完成依赖的说明。
格式:
<dependencies>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.16</version>
</dependency>
</dependencies>
maven使用gav作为标识,从互联网下载依赖的jar。 下载到你的本机上。 由maven管理项目使用的这些jar
仓库是存东西的,maven的仓库存放的是:
仓库的分类:
修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)
步骤:
- 创建一个目录,作为仓库使用。 目录不要有中文和空格。 目录不要太深。
例如: D:\openrepository
-修改setting.xml文件,指定 D:\openrepository这个目录
D:/openrepository
maven使用仓库: maven自动使用仓库, 当项目启动后, 执行了maven的命令, maven首先访问的是本地仓库, 从仓库中获取所需的jar, 如果本地仓库没有 ,需要访问私服或者中央仓库或者镜像。
Maven仓库的工作顺序:
如果没有本地厂库:则直接从中央仓库查找下载
1.清理
mvn clean //会删除原来编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除
//插件: maven-clean-plugin
2.编译
mvn compile //编译主程序,会在与src统计目录下生产target目录,并把src/main/目录下的所有java代码编译成class文件并将其放在target/classes目录下
//插件: maven-compiler-plugin 版本3.1。 编译代码的插件
//maven-resources-plugin 版本2.6 。 资源插件, 处理文件的。 作用是把src/main/resources目录中的文件拷贝target/classes目录中。
3.测试
mvn test-compile //编译src/test目录中的源文件,把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到 test-clasess目录
/*插件: maven-compiler-plugin 编译代码的插件
maven-resources-plugin 资源插件, 处理文件的*/
mvn test //测试src/main/java目录中的主程序代码是否符合要求,执行的是target/test-compile/下的类文件.会生成一个目录surefire-reports,保存测试结果
/*插件: maven-surefire-plugin 编译代码的插件*/
4.打包
mvn package //打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件中, 默认压缩文件是jar类型的。web应用是war类型,扩展是jar,war的。放在target目录下
/* 插件:maven-jar-plugin,执行打包处理。生成一个jar扩展的文件,放在target目录下
打包的文件包含的是 src/main目录中的所有的生成的class和配置文件和test无关。
生成的是 ch01-maven-1.0-SNAPSHOT.jar -> 打包的文件名: artifactId-version.packaging*/
5.安装
mvn install // 把生成的打包的文件(放在target目录下) ,并安装到maven仓库。
/* 插件: maven-install-plugin 把生成的jar文件安装到本地仓库。*/
安装目录为当前maven仓库下该项目groupID/artifactId/version/目录下
如果groupId中有'.',前后都是独立的文件夹
6.部署
mvn deploy
将程序安装在服务器上
命令可组合
mvn clean package
例如maven-complier-plugin,在pom.xml文件中build下设置,设置插件
<!--设置构建项目的操作-->
<build>
<plugins>
<!--设置插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-complier-plugin</artifactId>
<version>2.1</version>
<configuration>
<source>1.8</source> //编译代码的jdk版本
<target>1.8</target> /运行java程序的jdk版本
</configuration>
</plugin>
</plugins>
</build>
idea中自带maven,如何让idea用我们自己的maven
1.IDEA下maven的配置 File-settings
编译器设置
2.设置其他新建的项目与导入项目(点此后与上面的步骤相同)
默认的scope是‘compile’,会随着java打包将相 关文件一起打包
1)在Maven的pom.xml文件中,用于定义全局变量,POM中通过${property_name}的形式应用变量的值。
//定义全局的变量:
<properties>
<spring.version>4.8.10.RELEASE</spring.version>
</properties>
//引用全局变量:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
2)配置
3)使用资源插件
4)告诉Maven把src/mian/java目录中的指定的指定扩展名称的文件拷贝到target/classes目录中