项目开发之Maven
maven的作用:
- 不用手动去添加下载项目所依赖jar包,只需要通过maven进行配置,在pom.xml文件中配置所以依赖的包即可,降低了开发难度。
- 导入过程:先从本地仓库找(可设置仓库位置),找不到后在向中央仓库找(可定义镜像仓库以提高访问速度)
jar包的定位
<dependency>
<groupId></groupId> <!-- 公司网站反写+ 项目名-->
<artifactId></artifactId> <!-- 项目名 -->
<version></version> <!-- 版本 -->
</dependency>
maven常用命令
传递依赖
定义:A依赖B、B依赖C,则A同样依赖于B,在A的pom.xml文件中配置B,会将C的jar包一起导入(可用<exclusions><exclusion>
标签排除)
依赖冲突(依赖冲突介绍)
a、短路优先:B依赖于C,A依赖于B,A会自动导入他所最近依赖(B)的jar包,不会导入C的。
b、先声明优先:A依赖于B,C,若B被依赖顺序在C之前,则导入B的包。
c、使用mvn dependency:tree
查找依赖冲突位置,解决不了使用<exclusion>
标签
1.标签的插入
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <!-- 生成source.jar包 -->
<version>2.4</version>
<executions>
<execution>
<phase>package</phase> <!-- 运行阶段 -->
<goals>
<goal>jar-no-fork</goal> <!-- 运行目标 -->
</goals>
</execution>
</executions>
<plugin>
<plugins/>
<build/>
依赖冲突解决方案:
- 在项目设计时统一管理好依赖版本(建立父pom.xml统一配置)
<!-- 父pom -->
<properties>
<httpclient.version>4.5.1</httpclient.version> <!-- 统一好版本 -->
</properties>
<dependencyManagement> <!--依赖管理-->
<dependencies>
<dependency>
<groupId> org.apache.httpcomponents </groupId>
<artifactId> httpclient </artifactId>
<version> ${httpclient.version} </version>
</dependency>
</dependencies>
</dependencyManagement>
...
<!-- 其他jar包管理 -->
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId> httpclient </artifactId>
</dependency>
</dependencies>
- 出现冲突了使用
mvn dependency:tree
查找依赖冲突位置,导入符合的版本,解决不了使用<exclusion>
标签(该标签是切断传递依赖A-B-C,使A不依赖于C,依赖于符合项目的C版本) - 理解图:
A->B->C(1.1)
D->C(1.2)
出现版本冲突(短路优先会导入1.2),切断C使得A依赖于1.2版本的
完整的项目构建过程