Maven(三)——Maven管理多模块Web项目例子

  • 在实际的开发中,一个大项目都是由多个子项目组成的,这些子项目之间可以互相依赖,互相调用。
  • 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);
    }
}

猜你喜欢

转载自blog.csdn.net/u011741311/article/details/80162683