- 在实际的开发中,一个大项目都是由多个子项目组成的,这些子项目之间可以互相依赖,互相调用。
- maven可以方便的执行多项目间的管理。
以前面的Restaurant项目为例,把做黄焖鸡的代码放到Kitchen项目中,让Restaurant项目调用Kitchen项目。
到maven-restaurant下, 执行mvn archetype:generate命令,创建名为Kitchen的Java项目:
mvn archetype:generate -DgroupId=com.meteor -DartifactId=Kitchen -Dpackage=com.meteor -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart
- 在src/main/java/com/meteor下创建makeBraisedChicken类
package main.java.com.meteor;
public class Kitchen {
public static String makeBraisedChicken(String size, String spicy) {
if (size == null) {
size = "small";
}
if (spicy == null) {
spicy = "very spicy";
}
StringBuffer s = new StringBuffer();
s.append("<html><body>\n")
.append("<h1> BraisedChicken with ")
.append(size + " and " + spicy)
.append("</h1>\n")
.append("</body></html>");
return s.toString();
}
}
- 修改项目间的依赖关系
- 首先,在maven-restaurant下创建pom.xml,作为父模块,由Restaurant和Kitchen两个模块组成
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.meteor</groupId>
<artifactId>restaurant-parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>Multi modules demo</name>
<modules>
<module>Restaurant</module>
<module>Kitchen</module>
</modules>
</project>
- 分别在Kitchen模块和Restaurant模块的pom.xml文件添加以下代码,设置父模块。
<parent>
<groupId>com.meteor</groupId>
<artifactId>restaurant-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
- 由于做黄焖鸡的代码放到了Kitchen项目中,所以Restaurant项目要依赖Kitchen项目,调用其makeBraisedChicken方法。
- 在Restaurant项目中的dependencies节点下,添加:
<dependency>
<groupId>com.meteor</groupId>
<artifactId>Kitchen</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
- 到Restaurant中的BraisedChickenServlet下,修改代码为:
package com.meteor;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class BraisedChickenServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter writer = response.getWriter();
String size = request.getParameter("size");
String spicy = request.getParameter("spicy");
String chicken = main.java.com.meteor.Kitchen.makeBraisedChicken(size, spicy);
writer.println(chicken);
}
}
- 在maven-restaurant下执行 mvn install
- 在Restaurant中执行 mvn tomcat7:run
- 在浏览器中访问:http://localhost:8181/Restaurant/choose