1. 程式人生 > >Maven(三)——Maven管理多模組Web專案例子

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);
    }
}
  • 在maven-restaurant下執行 mvn install
  • 在Restaurant中執行 mvn tomcat7:run