一、创建父工程
父工程如下:
父工程不做事,来指挥。来管理,聚合。
所有jar包由父工程来管理,子工程从父工程继承jar包。
二、创建子工程-dao
在ssh-parent项目上右击 ,创建时选择 Maven Module
点击next
点击finish
把ssh项目中与dao相关的部分移植到这里来。
三、创建子工程-service
创建过程与dao类似
移植ssh中与service相关的部分
我们的service依赖了dao。要在service工程中引入dao工程。在引入之前,dao工程要发布到本地仓库。ssh-parent也要打进去。
发布parent工程
service报错了,先在父工程中注释掉service
ssh-parent右键-run as-maven build..
发布成功。我们发布的是parent,结果是,dao也打进去了。
引入dao工程所打成的jar包
右键ssh-service-maven-add dependency
创建一个测试类,此时,我们发现junit缺少了,可是,我们在dao里面引入了,而service又引入了dao。
这是因为dao里面的junit的scope是test。这就是依赖范围对依赖传递造成的影响。
举例:service依赖dao,是最左边一列的compile,dao依赖junit是第一行的test,传递的结果是service无法依赖到junit。
创建好了测试类
@RunWith(SpringJUnit4ClassRunner.class) // 使用junit4进行测试
@ContextConfiguration(locations = { "classpath:applicationContext-service.xml" }) // 加载配置文件
public class CustomerServiceImplTest {
@Autowired
private CustomerService customerService;
@Test
public void test() {
Customer customer = customerService.findById(1L);
System.out.println(customer);
}
}
运行之后:
也可以这样:
四、创建子工程-web
对service工程进行发布。
我们要发布时候,测试代码都已经没用了。在打包的过程中,会被运行。所以,我们把test代码注释掉。
install成功
把service工程关闭
在web工程中添加service的引用。
搜不出来,是因为索引没有更新。
再添加引用就成功了
在ssh-web工程上-run as-maven build...-tomcat:run
还可以在ssh-parent工程上运行
在ssh-parent上运行就是所谓的聚合。