Maven:
(1)管理依赖包(jar包)
例如: 我们导入A.jar 如果A.jar依赖于B.jar 在导入A.jar时,Maven会帮我们导入B.jar
本地仓库: 本地设备上存放所有jar包的地方
中央仓库: 在远程服务器上存放jar包的地方
中央仓库镜像:
导jar包的过程,先从中央仓库中查找,如果有,直接用,如果没有,从中央仓库中导出.
私服:公司塔建了一个服务器.在该服务器上存放一些常用的jar包,当从本地仓库查找不到,可以使用公司服务器上的jar包.
(2)将项目模块化
在A项目中完成Dao层,在B项目中完成Service层,在C项目中完成表现层(UI)
在实际开发中service要依赖于Dao, Controller依赖于Service.
将Dao层所在的项目构建于本地仓库中,在Service层构建Dao的依赖包,在Service中可以使用Dao项目中的功能.
(3)Maven项目架构
src
main
java——-java源文件
resource—-资源文件和配置文件
test
java
resource
(4)Maven的依赖配置
POM(project object model)文件 ——-项目对象模块
GAV(Group Id Artifact Id Version): 该项目Maven的坐标
Maven——Installations
Other mirrors: 镜像.
(5)Maven build: 构建到本地仓库中
(1)依赖的有效性: test, compile, provided, System, runtime
(2)依赖排除:(注意:除非肯定不使用,要不就使用依赖来排除)
A.jar—>B.jar 我们只想依赖单独A.jar A[x.class,y.class] B[w.class,z.class]
(3)依赖的传递性:
A.jar–>B.jar–>C.jar只有当B.jar和C.jar的有效性为compile时,A.jar–>C.jar
(4)依赖的整合:
在Maven中整合MavenB MavenB install到本地仓库
在MavenA的pom文件中依赖MavenB ,在MavenA中使用MavenB的功能.
(6)JDK版本的设置:
<!-- 配置jdk环境,如果想统一环境,可以写入settings.xml里 -->
<profiles>
<profile>
<id>development</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</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>
(7)统一版本的设置
<!-- 统一属性设置 -->
<properties>
<!-- 字符编码配置 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 全局版本配置 -->
<project.junit>4.12</project.junit>
<project.jdbc.connector>8.0.11</project.jdbc.connector>
<!-- 名字随便起,下面用${name} 就可以使用值,有点类似el表达式 -->
<!-- ${project.junit.version} -->
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>${project.junit}</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${project.jdbc.connector}</version>
</dependency>
</dependencies>
(8)依赖原则
(1)就近原则(最短冲突)
例如: MavenA–>junit
MavenA–> MavenB–>junit
(2)如果在同一个pom文件中,配置了同一个依赖,按照”下面”的依赖引入
(3)如果都是通过依赖其它的模块传递过来的jar包,按照”上面”的依赖引入
例如: MavenA–>MavenB–>junit 4.0
MavenA–>MavenC–> junit 4.12 谁先声明,按照谁来
(9)Maven继承
(1)一般父工程packaging是pom
(2)在子工程的pom配置
<parent>
父工程的gav
父工程的pom文件的相对路径
</parent>
(3)并不是将父工程中所有的依赖都导入进来,需要用那些依赖,还需要子工程指定.
指定的时候,只需要指定groupId 和 artifactId
(10)Maven的聚合(把各个模块聚合到一块)
(例如:dao层,service层,action层)将不同的模块/项目,聚合到一起.