Maven
maven 是一个基于Java平台的 自动化构建工具.
maven 作用:
1.管理jar:
i.增加第三方jar
ii.jar包之间的依赖关系 自动下载依赖关联的jar,不会冲突
2.将项目拆分成若干模块
maven 功能:
清理:删除编译的结果,为重新编译做准备。
编译:java->class
测试: 针对于 项目中的关键点进行测试,亦可用 项目中的测试代码 去测试开发代码;
报告:将测试的结果 进行显示
打包: 将项目中包含的多个文件 压缩成一个文件, 用于安装或部署。 (java项目-jar、web项目-war)
安装:将打成的包 放到 本地仓库,供其他项目使用。
部署:将打成的包 放到 服务器上准备运行。
maven配置
1.配置JDK
2.下载解压maven
3.配置MAVEN_HOME
(D:\Program Files (x86)\apache-maven-3.6.0-bin\apache-maven-3.6.0)
4.配置path (%MAVEN_HOME%\bin)
5. mvn -v 出现下图安装成功
6.配置本地仓库: /conf/setting.xml
<localRepository>D:/MavenRepository</localRepository>
默认仓库地址为 user/.m2/repository
7.添加镜像
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
8.开发平台配置
Maven生命周期和常用命令
生命周期包含的阶段:3个阶段
1.clean lifecycle :清理
pre-clean 执行需要在clean前完成的工作
clean 清理上一次编译产生的文件(target)
post-clean 执行需要clean完成后立刻执行的工作
2.default lifecycle :默认(常用)
3.site lifecycle:站点
pre-site 执行需要在生成站点文档前完成的工作
site 生成项目站点
post-site 执行需要在生成站点文档后需要完成的工作
site-deploy 站点部署
常用命令:
mvn complie 编译main中的java文件
mvn test 测试
mvn package 打包
mvn install 将开发模块导入本地仓库供其他模块使用
mvn clean 清理编译产生的文件,target
mvn deploy 部署
pom.xml
pom.xml 是maven项目级别的配置文件,描述了项目的maven坐标和依赖等关系。
maven坐标
<groupId>大项目名</groupId>
<groupId>org.lanqiao.maven</groupId>
<artifactId>子模块名</artifactId>
<artifactId>HelloWorld</artifactId>
<version>版本号</version>
<version>0.0.1-SNAPSHOT</version>
gav可以唯一的标识jar包的位置
依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
依赖原则
路线就近原则
相同路径时:
I.同一个pom.xml后面依赖覆盖前面依赖
II.不同pom.xml先声明依赖覆盖后声明依赖
依赖有效性
依赖传递
A.jar—>B.jar—(compile)–>C.jar
A.jar---->C.jar
多个maven项目之间依赖
A—>B
B install 到本地仓库(mvn install)
A配置依赖:
<dependency>
<groupId>cn.edu.zzti.zjj</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
依赖排除
A.jar(…x.java)---->B.jar(…y.java,z.java)
x.java---->y.java
排除z.java
<exclusions>
<exclusion>
<groupId>........</groupId>
<artifactId>z</artifactId>
</exclusion>
</exclusions>
maven统一JDK
<profiles>
<profile>
<id>jdk-18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
打包方式
java----->jar
Web---->war
父工程,聚合工程---->pom
继承
1.建立父工程,打包方式为pom
描述依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.建立子工程,并继承父工程
<parent>
<!-- 1加入父工程坐标gav -->
<groupId>.......</groupId>
<artifactId>B</artifactId>
<version>........</version>
<!-- 2当前工程的Pom.xml到父工程的Pom.xml之间的 相对路径 -->
<relativePath>../B/pom.xml</relativePath>
</parent>
声明依赖:
<dependency>
<!-- 声明:需要使用到父类的junit (只需要ga) -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
聚合
省去了手动install的操作
1.创建聚合总工程,打包方式为pom
配置聚合:
<modules>
<!--项目的根路径 -->
<module>../Maven1</module>
<module>../Maven2</module>
</modules>