maven
maven约定的目录结构
每一个maven项目在磁盘中都是一个文件夹
项目名称 /
------------/src
-----------------/main #放主程序的java代码和配置文件
------------------------/java #程序的程序包和包中的java文件
------------------------/resources#程序的Java文件要使用的配置文件
-----------------/test#放测试程序的代码和文件(可以没有)
------------------------/java #测试程序的程序包和包中的java文件
------------------------/resources#测试程序的Java文件要使用的配置文件
------------/pom.xml#maven的核心文件(maven项目必须有)
maven配置文件
pom是项目对象模型,是一个pom.xml文件
- 坐标:唯一值,在互联网中唯一标识一个项目的
<groupId>公司域名的倒写</groupId> <artifactId>自定义项目名称</artifactId> <version>自定义版本号</version>
搜索使用的中央仓库:https://mvnrepository.com/
- packing:打包后压缩文件的扩展名,默认是jar,web是war
packing可以不写,默认值是jar- 依赖
dependencies和dependency,相当于java 中的 import。
项目中要使用的各种资源说明,比如项目中要使用MySQL驱动<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.9</version> </dependency> </dependencies>
- properties 配置属性
<properties> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.targer>1.8</maven.compiler.targer> </properties>
- build:maven在进行项目的构建时,配置信息,例如指定编译java代码使用的jdk版本等等
maven生命周期 maven命令 maven的插件
- maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
- maven命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven可以使用命令完成项目的清理,编译,测试等等- maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,就是一些类。
在idea下运用maven
配置入口:配置当前工程的设置,①file—setting—Build Excution Deployment----Build Tools—maven
配置以后新建工程的设置,②file-----other setting
使用模板创建项目
- maven-archetype-quickstart :普通的java项目
- maven-archetype-webapp :web工程
依赖范围
使用scope表示。
- scope的值有compile ,test ,provided,默认是compile
scope:表示依赖使用范围,也就是在maven项目中哪些阶段起作用。
maven构建项目的过程,编译,测试,打包,安装,部署(阶段)- compile在所有阶段都起作用
- test 在测试阶段起作用
- provided 在编译,测试阶段起作用。在打包之后的阶段会有其他程序提供相应的依赖
maven常用操作
- 1.maven的属性设置
<properties>
设置maven的常用属性- 2.maven的全局变量
自定义的属性,1.在<properties>
通过自定义标签声明变量(标签名就是变量名)
2.在pom.xml文件中的其他位置,使用${标签名}
使用变量的值
自定义全局变量一般是定义 依赖的版本号,当你的项目中要使用多个相同的版本号,
先使用全局变量定义,在使用${变量名}
-3.资源插件<resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes><!--包括目录下的.properties,.xml文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--filtering选项false不启用过滤器,*.property已经起到过滤的作用了--> <filtering>false</filtering> </resource> </resources>
作用:mybatis课程中会用到这个作用
1.默认没有使用resources的时候,maven执行编译文件时,会把src/main/resources目录中的文件拷贝到target/classes目录中。
对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中
2.我们的程序有些时候需要把一些文件放在src/main/java目录中,当我们执行Java程序时,需要用到src/main/java目录中的文件。需要告诉maven在mvn compile src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中。
此时就需要在<build>
中加入<resources>
。