Maven小结
1. maven
是一个项目的构建工具
2. maven的作用
- 管理依赖:jar管理的,下载,版本
- 构建项目,完成项目代码的编译,测试,打包,部署
3. maven的使用方式
- 独立使用maven:使用maven的各种命令,完成代码的编译,测试,打包等
- 结合开发工具使用,一般在idea中使用maven:简单,快捷,不需要记命令
4. maven的安装
- 获取安装包,zip文件
- 解压缩文件,到一个目录,非中文目录
- 配置环境变量,M2_HOME,它的值是maven的安装目录
- 在path中加入
%M2_HOME\bin
- 测试maven的安装,使用
mvn -v
,查看maven的版本信息
5. maven的核心概念
约定的目录结构
- 项目的目录Hello
src
和pom.xml
平级src/main
java
:主程序java文件resources
:配置文件
src/test
java
:测试程序代码resources
:测试使用的配置文件
坐标(gav)
groupId
:组织编码,域名倒写artifactId
:项目名称version
:自定义版本号
依赖(dependency):maven管理依赖
<!--使用依赖吧jar导入到项目中--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
仓库
- 存放的
jar
,maven的插件等等 - 仓库分类
- 本地仓库:可以在maven安装目录/conf/settings.xml指定,
<localRespository>非中文路径,不要有空格</localRespository>
- 中央仓库:最权威的,所有资源都在这里
- 中央仓库的镜像:分担压力的
- 私服:公司的局域网内部使用的
- 本地仓库:可以在maven安装目录/conf/settings.xml指定,
- 存放的
maven的命令:maven通过命令完成项目的构建
mvn clean
:清理mvn compile
:编译src/main/java目录
中的程序,把java编译为class文件,并放到target/classes目录
中;同时会把src/main/resources/目录
中的文件拷贝到target/classes目录
中mvn test-compile
:编译src/main/test目录
下的java程序,拷贝到target/test-classes目录
中mvn test
:可以进行单元测试,使用junit
测试src/main/java目录
中的程序是否符合要求mvn package
:打包,把程序中src/main/目录
下面的java编译后的class和resources中的配置文件放入到一个压缩文件中,javase-jar,web-warmvn install
:把jar
,war
安装到本机的仓库中
maven的生命周期和插件
- 生命周期:项目的构建过程,清理、编译、测试、报告、打包、安装、部署
- 插件:maven提供的功能,用来执行清理、编译、测试、报告、打包的程序
6. 依赖范围
compile
:默认,在够贱的编译、测试、打包、部署需要test
:只在测试阶段需要provided
:在部署时,由服务器提供,项目本身不需要自带
7. maven常用设置
maven自己的属性
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>14</maven.compiler.source> <maven.compiler.target>14</maven.compiler.target>
自定义变量
<!--自定义变量,表示版本号--> <junit.version>4.11</junit.version> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency>
resource资源插件
<build> <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> </build>
- 默认没有使用resources的时候,maven执行编译代码时,会把
src/main/resources目录
中的文件拷贝到target/classes目录
中。对于src/main/java目录
下的非java文件不处理,不拷贝到target/classes目录
中 - 我们的程序有需要把一些文件放置
src/main/java目录
中,当我在执行java程序时,需要用到scr/main/java目录
中的文件。需要告诉maven在mvn compile
编译src/main/java目录
下的程序时,需要把文件一同拷贝到target/classes目录
中。此时就需要在<build>
中加入<resources>
- 默认没有使用resources的时候,maven执行编译代码时,会把
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!