项目少的话还好,但是如果项目多的话,一个个操作项目就容易出现漏掉或重复操作的问题,所以我们就想能不能抽取一个项目,把所有的项目管理起来,以后我们要想操作这些项目,只需要操作这一个项目,其他所有的项目都走一样的流程,这个不就很省事省力。
这就用到了我们接下来的 聚合 ,
关于聚合具体的实现步骤为:
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.itheima
maven_01_parent
1.0-RELEASE
pom
说明: 项目的packaging打包方式,我们接触到的有三种,分别是
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.itheima
maven_01_parent
1.0-RELEASE
pom
../maven_02_ssm
../maven_03_pojo
../maven_04_dao
测试发现,当 maven_01_parent 的 compile 被点击后,所有被其管理的项目都会被执行编译操作。这就是聚合工程的作用。
说明: 聚合工程管理的项目在进行运行的时候,会按照项目与项目之间的依赖关系来自动决定执行的顺序 ,按照倒序进行构建,和modules里面的配置的顺序无关。 。
我们已经完成了使用聚合工程去管理项目,聚合工程进行某一个构建操作,其他被其管理的项目也会执行相同的构建操作。那么接下来,我们再来分析下,多模块开发存在的另外一个问题, 重复配置 的问题,我们先来看张图:
面对上面的这些问题,我们就得用到接下来的 继承
接下来,我们到程序中去看看继承该如何实现?
因为这一步和前面maven创建聚合工程的方式是一摸一样,所以我们可以单独创建一个新的工程,也可以直接和聚合公用一个工程。实际开发中,聚合和继承一般也都放在同一个项目中,但是这两个的功能是不一样的。
分别在 maven_02_ssm , maven_03_pojo , maven_04_dao 的pom.xml中添加其父项目为 maven_01_parent
com.itheima
maven_01_parent
1.0-RELEASE
../maven_01_parent/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.itheima
maven_01_parent
1.0-RELEASE
pom
../maven_02_ssm
../maven_03_pojo
../maven_04_dao
org.springframework
spring-core
5.2.10.RELEASE
org.springframework
spring-webmvc
5.2.10.RELEASE
org.springframework
spring-jdbc
5.2.10.RELEASE
org.springframework
spring-test
5.2.10.RELEASE
org.mybatis
mybatis
3.5.6
org.mybatis
mybatis-spring
1.3.0
mysql
mysql-connector-java
5.1.47
com.alibaba
druid
1.1.16
javax.servlet
javax.servlet-api
3.1.0
provided
com.fasterxml.jackson.core
jackson-databind
2.9.0
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.itheima
maven_02_ssm
1.0-SNAPSHOT
war
com.itheima
maven_01_parent
1.0-RELEASE
../maven_01_parent/pom.xml
junit
junit
4.12
test
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
80
/
删除完后,你会发现父项目中有依赖对应的jar包,子项目虽然已经将重复的依赖删除掉了,但是刷新的时候,子项目中所需要的jar包依然存在。
当项目的
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.itheima
maven_04_dao
1.0-SNAPSHOT
com.itheima
maven_01_parent
1.0-RELEASE
../maven_01_parent/pom.xml
刷新并查看Maven的面板,会发现maven_04_dao同样引入了父项目中的所有依赖。
这样我们就可以解决刚才提到的第一个问题,将子项目中的公共jar包抽取到父工程中进行统一添加依赖,这样做的可以简化配置,并且当父工程中所依赖的jar包版本发生变化,所有子项目中对应的jar包版本也会跟着更新。
如果把所有用到的jar包都管理在父项目的pom.xml,看上去更简单些,但是这样就会导致有很多项目引入了过多自己不需要的jar包。如上面看到的这张图:
如果把所有的依赖都放在了父工程中进行统一维护,例如ssm_crm,ssm_goods,ssm_order都继承至ssm_parent,并且ssm_parent里面包含了spring-webmvc、spring-jdbc、spring-test等依赖,那这样就会导致ssm_order项目中多引入了 spring-test 的jar包(但其实是不需要),如果这样的jar包过多的话,对于ssm_order来说也是一种"负担"。
那针对于这种部分项目有的jar包,我们该如何管理优化呢?
junit
junit
4.12
test
刷新完会发现,在maven_02_ssm项目中的junit依赖并没有出现,所以我们得到一个结论:
junit
junit
test
注意:这里就不需要添加版本了,这样做的好处就是当父工程dependencyManagement标签中的版本发生变化后,子项目中的依赖版本也会跟着发生变化
maven_02_ssm这个项目中的junit版本就会跟随着父项目中的标签dependencyManagement中junit的版本发生变化而变化。不需要junit的项目就不需要添加对应的依赖即可。
总结来说,继承可以帮助做两件事
两种之间的作用:
聚合和继承的相同点:
聚合和继承的不同点:
留言与评论(共有 0 条评论) “” |