maven解决jar包冲突
-
方式一:
第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包坐标下的依赖包,可以优先进入项目中。- maven导入jar包中的一些概念:
直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包
传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖的jar包传递到项目中去。
- maven导入jar包中的一些概念:
-
方式二:
路径近者优先原则:直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖。 -
方式三:(推荐)
当我们要排除某个jar包下的依赖包,在配置exclusion标签的时候,内部可以不写版本号,因为此时依赖包所使用的版本默认和本jar包一样。
maven工程拆分与聚合思想
- maven解决代码可重用和便于维护的问题:
maven把一个完整的项目,分成不同的模块,这些模块都有各自独立的坐标,哪些地方需要其中某个模块,就直接引用模块的坐标即可。 - 把拆分零散的模块聚合到一起编写一个完整的项目,就是maven的聚合。
maven工程与模块关系及继承和依赖
工程和模块的区别:
工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完成,就可以说这是一个完整的项目
和此项目是工程和模块没有关系
工程天生只能使用自己内部资源,工程天生是独立的,后天可以和其他工程或模块建立关联关系
模块天生不是独立的,是属于父工程的,模块一旦创建,所有父工程的资源都可以使用
父子工程之间,子模块天生继承父工程,可以使用父工程所有资源
子模块之间是没有任何关系的
父子工程之间不用建立关系,继承关系是先天的,不需要手动建立
平级之间的引用叫依赖,依赖不是先天的,是需要后天建立的
maven父子工程三种启动方式
- 直接run父工程
- run子工程web,需要先install父工程下所有jar包,使用maven自带的tomcat,记得需要添加插件
<!-- 添加tomcat7插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
- 使用本地的tomcat运行项目
启动后浏览器默认跳转maven_web模块中的index.jsp,需要自己手动输入要访问的路径,路径中不用带项目名称。