zoukankan      html  css  js  c++  java
  • maven 多工程搭建演示

    maven出现后,很多公司会用maven来构建项目,单仅仅只是单项目单工程的

    并没有使用多工程来构建,这样在以后,项目越来越大,业务越来越多以后,项目会难以维护,越发庞大,维护成本提高,团队士气也会下降

    等等情况,使用maven构建多工程就是如今的趋势

    这边演示一个maven工程相互依赖的例子,高手轻拍,大家互相学习,有不足之处请指出

    1.新建demo-parent项目,作为父工程

    选择quickstart

    修改pom中的jar改为pom,这样的意思是当前工程为父工程,可以再其下创建子工程

    2.新建demo-project-web,作为web工程,这个工程是总的web工程,下面将会包含另外2个子web工程

    选择webapp作为web工程

    3.同理创建demo-project-customer-web作为子web工程(webapp),这个工程是一个独立web工程,他包含了service,dao

    4.同理创建demo-project-gods-web作为子web工程(webapp),这个工程将有一个demo-project-gods-core作为后台(core就是包含了service,dao)

    5.创建demo-project-gods-core作为子工程(quickstart),依赖demo-project-gods-web

    6.创建demo-common,作为子工程(quickstart),作用是工具包,可被其他工程依赖引用

    3-6步骤略,生成项目如下图:

    父工程pom会成这样:

    1 <modules>
    2       <module>demo-project-web</module>
    3       <module>demo-project-gods-web</module>
    4       <module>demo-project-customer-web</module>
    5       <module>demo-project-gods-core</module>
    6       <module>demo-common</module>
    7   </modules>

    好,那么现在来做工程之间的依赖

    首先,demo-project-web作为顶级web项目,所有的子web项目打包后都会整合在此(如果同名文件则被顶级覆盖,如果顶级没有同名文件,但是子web有同名文件,则按照依赖顺序被优先依赖的同名文件覆盖)

    pom如下:

     1 <?xml version="1.0"?>
     2 <project
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
     4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <parent>
     8         <groupId>com.demo</groupId>
     9         <artifactId>demo-parent</artifactId>
    10         <version>0.0.1-SNAPSHOT</version>
    11     </parent>
    12 
    13     <groupId>com.demo</groupId>
    14     <artifactId>demo-project-web</artifactId>
    15     <version>0.0.1-SNAPSHOT</version>
    16     <packaging>war</packaging>
    17     <name>demo-project-web Maven Webapp</name>
    18     <url>http://maven.apache.org</url>
    19 
    20     <dependencies>
    21 
    22         <!-- 增加要合并的war包依赖 -->
    23         <dependency>
    24             <groupId>com.demo</groupId>
    25             <artifactId>demo-project-gods-web</artifactId>
    26             <version>0.0.1-SNAPSHOT</version>
    27             <type>war</type>
    28         </dependency>
    29         <dependency>
    30             <groupId>com.demo</groupId>
    31             <artifactId>demo-project-customer-web</artifactId>
    32             <version>0.0.1-SNAPSHOT</version>
    33             <type>war</type>
    34         </dependency>
    35 
    36         <dependency>
    37             <groupId>junit</groupId>
    38             <artifactId>junit</artifactId>
    39             <version>3.8.1</version>
    40             <scope>test</scope>
    41         </dependency>
    42 
    43     </dependencies>
    44 
    45     <build>
    46 
    47         <finalName>demo-project-web</finalName>
    48 
    49         <plugins>
    50 
    51             <plugin>
    52                 <groupId>org.apache.maven.plugins</groupId>
    53                 <artifactId>maven-war-plugin</artifactId>
    54                 <version>2.6</version>
    55                 <configuration>
    56                     <!-- 把另外2个web子工程加入进来, 合并war -->
    57                     <overlays>
    58                         <overlay>
    59                             <groupId>com.demo</groupId>
    60                             <artifactId>demo-project-gods-web</artifactId>
    61                         </overlay>
    62                         <overlay>
    63                             <groupId>com.demo</groupId>
    64                             <artifactId>demo-project-customer-web</artifactId>
    65                         </overlay>
    66                     </overlays>
    67                 </configuration>
    68             </plugin>
    69 
    70         </plugins>
    71     </build>
    72 
    73 </project>

    修改demo-project-gods-web的pom,添加自身依赖core作为service以及DAO

     1 <?xml version="1.0"?>
     2 <project
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
     4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     5     <modelVersion>4.0.0</modelVersion>
     6     <parent>
     7         <groupId>com.demo</groupId>
     8         <artifactId>demo-parent</artifactId>
     9         <version>0.0.1-SNAPSHOT</version>
    10     </parent>
    11     <groupId>com.demo</groupId>
    12     <artifactId>demo-project-gods-web</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <packaging>war</packaging>
    15     <name>demo-project-gods-web Maven Webapp</name>
    16     <url>http://maven.apache.org</url>
    17 
    18     <dependencies>
    19 
    20         <!-- 引入依赖, core中包含service以及DAO -->
    21         <dependency>
    22             <groupId>com.demo</groupId>
    23             <artifactId>demo-project-gods-core</artifactId>
    24             <version>0.0.1-SNAPSHOT</version>
    25         </dependency>
    26 
    27         <dependency>
    28             <groupId>junit</groupId>
    29             <artifactId>junit</artifactId>
    30             <version>3.8.1</version>
    31             <scope>test</scope>
    32         </dependency>
    33 
    34     </dependencies>
    35 
    36     <build>
    37         <finalName>demo-project-gods-web</finalName>
    38     </build>
    39 </project>

    在customer中添加工具类依赖

     1 <?xml version="1.0"?>
     2 <project
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
     4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     5     <modelVersion>4.0.0</modelVersion>
     6     <parent>
     7         <groupId>com.demo</groupId>
     8         <artifactId>demo-parent</artifactId>
     9         <version>0.0.1-SNAPSHOT</version>
    10     </parent>
    11     <groupId>com.demo</groupId>
    12     <artifactId>demo-project-customer-web</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <packaging>war</packaging>
    15     <name>demo-project-customer-web Maven Webapp</name>
    16     <url>http://maven.apache.org</url>
    17     <dependencies>
    18 
    19         <!-- 添加common工具类依赖 -->
    20         <dependency>
    21             <groupId>com.demo</groupId>
    22             <artifactId>demo-common</artifactId>
    23             <version>0.0.1-SNAPSHOT</version>
    24         </dependency>
    25 
    26         <dependency>
    27             <groupId>junit</groupId>
    28             <artifactId>junit</artifactId>
    29             <version>3.8.1</version>
    30             <scope>test</scope>
    31         </dependency>
    32 
    33     </dependencies>
    34     <build>
    35         <finalName>demo-project-customer-web</finalName>
    36     </build>
    37 </project>

    ============进入代码阶段============

    parent是父工程,不需要编写代码

    demo-common:

     1 package org.demo.common;
     2 
     3 import java.util.Date;
     4 
     5 public class DateUtil {
     6 
     7     public static void showTime(String name) {
     8         System.out.println("Run in demo-common - Hello ~ " + name + ", it is " + new Date().toString());
     9     }
    10     
    11 }

    demo-project-customer-web:

     1 package com.demo.project.customer.web;
     2 
     3 import org.demo.common.DateUtil;
     4 
     5 public class AbcService {
     6 
     7     public static void getDateService(String name) {
     8         DateUtil.showTime(name);
     9         System.out.println("Run in demo-project-customer-web...");
    10     }
    11     
    12 }

    customer.jsp

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <%@page import="com.demo.project.customer.web.AbcService"%>
     3 <%@ page language="java" contentType="text/html; charset=UTF-8"
     4     pageEncoding="UTF-8"%>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     6 <html xmlns="http://www.w3.org/1999/xhtml"
     7     xmlns:f="http://java.sun.com/jsf/core"
     8     xmlns:h="http://java.sun.com/jsf/html">
     9 <head>
    10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    11 <title>Insert title here</title>
    12 </head>
    13 <body>
    14     <%
    15         System.out.print("hello demo-project-customer-web customer.jsp");
    16         AbcService.getDateService("abc");
    17     %>
    18     
    19 </body>
    20 </html>

    demo-project-gods-core:

     1 package org.demo.project.gods.core;
     2 
     3 
     4 public class Gods {
     5 
     6     public static void getDateService(String name) {
     7         System.out.println("Run in demo-project-gods-core...");
     8     }
     9     
    10 }

    demo-project-gods-web

    index.jsp

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <%@page import="org.demo.project.gods.core.Gods"%>
     3 <%@ page language="java" contentType="text/html; charset=UTF-8"
     4     pageEncoding="UTF-8"%>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     6 <html xmlns="http://www.w3.org/1999/xhtml"
     7     xmlns:f="http://java.sun.com/jsf/core"
     8     xmlns:h="http://java.sun.com/jsf/html">
     9 <head>
    10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    11 <title>Insert title here</title>
    12 </head>
    13 <body>
    14     
    15     <%
    16         System.out.print("hello demo-project-gods-web gods.jsp");
    17         Gods.getDateService("nathan");
    18         
    19     %>
    20 </body>
    21 </html>

    run - mvn install:

    运行成功,进入相应的页面则成功

  • 相关阅读:
    2018-04-27 搭建Python官方文档翻译环境-汉化示例代码
    2018-04-21 搭建Python官方文档翻译环境
    2018-01-19 Xtext试用: 5步实现一个(中文)JVM语言
    2018-02-27 "Literate Programming"一书摘记之一
    2018-02-18 Antlr4实现简单语言之条件语句
    2018-02-17 中文代码示例[译]Scala中创建隐式函数
    2018-02-16 中文代码示例之冒泡算法, 后感
    C code example for strdup
    Hash table: why size should be prime?
    Hash table lengths and prime numbers
  • 原文地址:https://www.cnblogs.com/leechenxiang/p/5339597.html
Copyright © 2011-2022 走看看