一.概念介绍
一个完整庞大的工程,是可以分为很多个小的模块的,而这些模块单独的使用是不行的,这个时候可以使用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);
}
}
在buyer
与merchant
(温馨提示:这两个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>
我们可以继续在merchant
与buyer
里面创建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的继承