maven项目:
-
单体的java项目
-
多模块开发
单体的java项目
编写pom.xml文件
jdk版本设置:
第一种修改方式:
第二种方式: 推荐
在pom.xml文件的properties标签中指定jdk版本: 源码jdk版本, 编译的jdk版本
<!--可选配置-->
<properties>
<!--指定项目的编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--指定jdk版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
第三种方式: 使用插件
maven的指令
指令 运行插件
运行指令:
-
如果这个指令maven定义好的, 默认插件, 只需要在idea的maven窗体,双击运行
常见指令:
-
clean: 清除, 删除target目录
target: maven插件运行生成文件保存的目录
-
compile: 编译源代码
-
test: 执行你的junit的单元测试代码, 把我们项目下所有的测试方法运行
实际中, 指定运行那个测试, 找到测试类, 运行测试方法
在实际开发中, 跳过test测试: 不运行测试方法
-
package: 打包
maven项目打包方式:
-
jar 默认的 java项目
-
war: web项目
-
pom: 父项目,聚合项目打包方式必须是pom, 表示该项目不能写代码
-
-
install: 安装, 把项目打成包,安装到本地仓库
-
deploy: 发布, 把本地仓库的jar发布远程仓库(公司私服)
第二种方式:
maven的依赖坐标与传递
坐标: 本地的仓库的文件夹
jar: groupId的文件夹/artifactId/version/xxx.jar
某个模块,有相同的groupId, 但是artifactId一定不一样
依赖的坐标,不需要我们记住, 只需要查
依赖的传递
A依赖B, B依赖C:
A项目中:
-
B依赖 直接依赖
-
C依赖 间接依赖
依赖可以进行传递
依赖的范围:
使用<scope>
指定依赖的范围:
-
compile:编译范围,指 A 在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
-
provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet-api,jsp-api 被 tomcat 容器提供。\
-
runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。 数据库驱动jar
-
test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以 test范围依赖不会被打包。 scope为test的依赖不会传递
-
system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
junit ----- test (测试有效)
scope为test的依赖不会传递
依赖的优先级
-
直接依赖优先级 高于间接依赖
-
都是直接依赖, 后面覆盖前面的
依赖排除
<dependency>
<groupId>com.fs</groupId>
<artifactId>demo1</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖-->
<exclusions>
<!--排除具体的依赖-->
<exclusion>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖的版本控制
在依赖中的version使用版本变量