本文共 2545 字,大约阅读时间需要 8 分钟。
当项目依赖一个jar包时,与这个jar包关联的其他jar包也会关联到当前项目,这种现象就是传递依赖。
比如A项目依赖B项目,B又依赖C项目, 此时A中也包含了C的依赖。依赖传递出现的问题: 经常出现jar包冲突,比如B中依赖一个jar包,C中也依赖一个jar包,两个jar包属于同一个,只是版本号不同,则会冲突
解决方案:
1 直接排除指定的jar包 2 版本号限定原则在“”中使用 mysql mysql-connector-java
5.1.42 mysql mysql-connector-java ${mysql.version} mysql mysql-connector-java
注意:如果是直接依赖,不遵循第一声明原则,后面会覆盖前面的依赖
A项目直接依赖 B项目 (最左边一列 A和B的依赖范围)
B项目直接依赖C 项目 (最上面一行B和C的依赖范围)
交叉点A和C的依赖范围
将商城项目拆分为多个模块开发:
依赖关系根据实际业务需求进行处理,我们还可以拆分为订单模块、支付模块、物流模块和web模块,订单/支付和物流之间没有关系,则不需要依赖,但是都和web有关系,则web可以依赖支付,支付而已依赖订单,实现传递依赖;web可以直接依赖物流。开发中多个项目有共同的jar包依赖,可以采用继承方式简化各个项目的pom文件,在父类的pom文件中依赖共同拥有的jar。继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定mysql的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。
注意:
1.父级项目只能是pom打包方式。 2.子项目是一个Maven Module,web模块是war包,其他是jar包项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web三个工程最终会打一个独立的war运行。
能够把项目的各个模块聚合在一起构建。一般用于分模块开发,最后整体打包发布。注意:
1.根项目(模块)是一个pom项目。 2.子模块:Maven Module 3.每个模块写完后需要上传到私服 4.打包,需要整体打包找到最后的war项目使用Tomcat加载实际中,我们会将一些庞大的项目拆分为若干模块进行开发
三层+MVC 如下: dao (包含实体类、utils)----------jar service------jar web----------war第一步:创建父工程,不需要骨架,然后修改pom.xml文件,更改版本以及导入版本号限定和依赖
第二步:右键父工程项目,新建【Module】,不需要骨架,创建dao,并继承父工程,pom.xml中的相关配置可以删除,因为继承了父工程
第三步:创建service,并继承父工程,同第二步
第四步:创建web,并继承父工程,需要骨架,同第二步
第五步:可以创建domain和utils放到dao模块,也可以单独创建两个,但是必须在web/service/dao模块的pom.xml文件中进行【传递】依赖配置,使之依赖utils和dao
第六步:配置tomcat,并运行
第七步:点击右边栏【MavenProject】选择父类模块,在生命周期中选择【package】打包,则对应的web为war包,对应的java为jar包,这样,可以将dao 和 service 模块删除了,或者忽略掉。然后在pom.xml中将依赖删除再复制(剪切),这样maven会直接将dao和service的jar包导入。
注意:分模块开发项目编译、打包、安装需要使用父工程来整体操作。如果要操作单个子模块,最后先整体安装一次,因为单个子模块需要依赖信息。
方法1:在maven-web工程的pom.xml中配置tomcat插件运行
运行maven-web工程它会从本地仓库下载依赖的jar包,所以当maven-web依赖的jar包内容修改了必须及时发布到本地仓库,比如:maven-web依赖的maven-service修改了,需要及时将maven-service发布到本地仓库。方法2:在父工程的pom.xml中配置tomcat插件运行,自动聚合并执行
推荐方法2,如果子工程都在本地,采用方法2则不需要子工程修改就立即发布到本地仓库,父工程会自动聚合并使用最新代码执行。
注意:如果子工程和父工程中都配置了tomcat插件,运行的端口和路径以子工程为准。
转载地址:http://ipgzi.baihongyu.com/