Maven入门:
Maven:
是一个基于Java平台的自动化构建工具
Maven有什么作用:
1.增加第三方jar
2.管理jar包之间的依赖关系(自动管理关联下载的jar包,并且不会冲突)
将项目拆分成若干个模块
Maven命令:
命令 | 功能 | 解释 |
---|---|---|
compile | 编译 | 只编译main目录之中的java文件 |
test | 测试 | 针对于项目中的关键点进行测试,亦可用项目中的册俄式代码去测试开发代码 |
package | 打包 | 将项目中包含的多个文件,压缩成一个文件,用于安装或部署 |
install | 安装 | 将打包之后的结果,放到本地仓库,供其他项目使用。 |
clean | 清理 | 删除编译的结果,为重新编译做准备 |
maven约定的目录结构:
项目
-src
-main :程序功能代码
-java Java代码
-resources 资源代码、配置代码
-test :测试代码
-java
-resources
pom.xml :项目对象模型(和src同级)
gav:(确定坐标)
<groupId>org.lanqiao.maven</groupId> <groupId>域名反转.大项目名</groupId>
<artifactId>Maventest</artifactId> <artifactId>子模块名</artifactId>
<version>1.0-SNAPSHOT</version> <version>版本编号</version>
Maven依赖:
什么是依赖:
commons-fileupload.jar----> commons-io.jar
A中的某些类需要使用B中的某些类,则称为A依赖于B
配置依赖:
在项目的pom.xml中配置如下代码
<dependencies>
<dependencies>
<groupId>junit</groupId>
<artifactId>junit</artifactId> <!--gav寻找本地仓库是否有,无则去中央仓库-->
<version>4.0</version>
<scope>test</scope>
</dependencies>
</dependencies>
在Maven项目中,如果要使用一个当时存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库、中央仓库去寻找)
依赖的范围、依赖的有效性:
默认设置为compile
compile | test | provide | |
---|---|---|---|
主程序(main) | √ | × | √ |
测试程序(test) | √ | √ | √ |
部署(运行) | √ | × | × |
设置范围:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
依赖排除:
A.jar -> B.jar
当我们通过Maven引入A.jar时,会自动引入B.jar
A.jar(x.java y.java z.java) B.jar(p.java c.java i.java)
如果A.jar和B.jar之间的依赖本质是:z.java -> c.java
设置依赖排除
在dependency中写
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId> //不需要写版本
</exclusion>
</exclusions>
依赖的传递性:
A.jar -> B.jar -> c.jar 数学上A.jar->C.jar
但是Java里不一定:要使A.jar -> C.jar
则必须是B在compile范围内依赖于C(利用继承,也可以)
Maven声明周期:
生命周期和构建关系:
生命周期中的顺序:a b c d e
当我们执行c命令执行顺序为:a b c
生命周期包含的阶段:三个阶段
clean lifecycle :清理
命令:pre-clean clean post-clean
default lifecycle :默认
site lifecycle :站点
命令:pre-site site post-site
多个Maven项目(模块)之间如何依赖:
<dependency>
<groupId>Maventest</groupId>
<artifactId>Maventest</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
依赖原则:
为了防止冲突
a.路径最短优先原则
b.路径长度相同时:
①在同一个pom.xml文件中有两个相同的文件:
后面声明的依赖会覆盖前面的声明的依赖(禁止使用这种情况)
②在不同的pom.xml上,有两个相同的依赖:
先声明的依赖,会覆盖后声明的依赖
通过maven统一jdk版本:
<profiles>
<profiles>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7<jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profiles>
</profiles>
pom.xml中的变量的定义
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
使用的时候通过调用
${project.build.sourceEncoding}
来获取