写给初学者的Maven教程——10聚合项目

上一篇:写给初学者的Maven教程——09Maven的继承

写给初学者的Maven教程——10聚合项目

一.概念介绍

一个完整庞大的工程,是可以分为很多个小的模块的,而这些模块单独的使用是不行的,这个时候可以使用Maven来将各个小的模块聚合起来成为一个完整的项目跑起来。
例如:电商项目中,包括商品模块、订单模块、用户模块等。就可以对不同的模块单独创建工程,最终在打包时,将不同的模块聚合到一起。

二.使用案例

1.创建Maven工程
在这里插入图片描述
创建好后pom.xml为:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.taobao</groupId>
  <artifactId>Platform</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>
  <modules>
  	<module>taobao-model</module>
  </modules>
</project>

2.创建模块
在这里插入图片描述
在这里插入图片描述
创建好后pom.xml为:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.taobao</groupId>
    <artifactId>Platform</artifactId>
    <version>1.0</version>
  </parent>
  <artifactId>taobao-model</artifactId>
</project>

这里演示了创建model模块,我们在下面的讲解里面还需要创建dao(jar),service(jar),merchant(war)(卖家),buyer(war)(买家)模块,方式一样这里不介绍。
接下来建立User类:
在这里插入图片描述

package model;
public class User {
	private String username;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
}

接下来创建IUserDao接口:
在这里插入图片描述

package dao;
public interface IUserDao {
	public void save(User user);
	public User findUserById(int id);
}

当然这样会报错,我们需要在taobao-dao/pom.xml里面配置:
在这里插入图片描述
接下来创建UserDaoImpl:
在这里插入图片描述

package Impl;
import dao.IUserDao;
import model.User;
public class UserDaoImpl implements IUserDao{
	public void save(User user) {
		// TODO 自动生成的方法存根
		System.out.println("Dao保存用户");
	}
	public User findUserById(int id) {
		// TODO 自动生成的方法存根
		System.out.println("Dao根据ID查用户"+id);
		return null;
	}
}

创建IUserService:
在这里插入图片描述

package service;
import model.User;
public interface IUserService {
	public void save(User user);
	public User findUserById(int id);
}

这里需要想IUserDao那样配置一下可以解决找不到User的问题。
创建UserServiceImpl:

package Impl;
import dao.IUserDao;
import model.User;
import service.IUserService;
public class UserServiceImpl implements IUserService{
	private IUserDao dao = new UserDaoImpl();
	public void save(User user) {
		// TODO 自动生成的方法存根
		dao.save(user);
	}
	public User findUserById(int id) {
		// TODO 自动生成的方法存根
		return  dao.findUserById(id);
	}
}

buyermerchant(温馨提示:这两个war工程创建后需要在webapp下面添加web-inf目录,具体做法在前面文章讲过)的pom.xml里面配置:

<dependencies>
  	<dependency>
  		<groupId>com.taobao</groupId>
    	<artifactId>taobao-service</artifactId>
    	<version>1.0</version>
  	</dependency>
</dependencies>

在这里插入图片描述
接下来我们子工程需要一些jar包,可以直接在父工程Platform里面的pom.xml里面来配置:

<dependencies>
	 	<dependency>
	 		<groupId>junit</groupId>
	 		<artifactId>junit</artifactId>
	 		<version>4.10</version>
	 	</dependency>
	 	
	 	<dependency>
	 		<groupId>javax.servlet</groupId>
	 		<artifactId>javax.servlet-api</artifactId>
	 		<version>3.1.0</version>
	 	</dependency>
 	</dependencies>

我们可以继续在merchantbuyer里面创建Controller,这里我介绍其中一个:
在这里插入图片描述

package Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Impl.UserServiceImpl;
import model.User;
import service.IUserService;
@WebServlet("/controller")
public class UserController extends HttpServlet{
	private IUserService service = new UserServiceImpl();
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
	        throws ServletException, IOException{
		service.save(new User());
		resp.sendRedirect("welcome.html");
	}
}

然后我们需要先install一下Platform。
接下来可以参考我前面讲解的tomcat配置的文章来开启tomcat。
我的配置如下:

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<path>/</path>
				<port>8888</port>
			</configuration>
		</plugin>
	</plugins>
</build>

如果访问时报cannot be cast to javax.servlet.Servlet 可参考cannot be cast to javax.servlet.Servlet 解决
访问localhost:8888/controller
在这里插入图片描述
在这里插入图片描述
最后说一下打包的问题:我们直接打包Platform是没有问题的,但是比方我们想要打包buyer这需要按照dao-service-buyer的顺序来打包,这是有依赖的顺序来决定的,实际上Platform打包就是按照的这个顺序
上一篇:写给初学者的Maven教程——09Maven的继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值