Maven使用笔记(六)使用Maven进行多模块拆分

模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分,

只做归纳总结,网上资料很多,不再一步一步实际创建和部署。

1.建立Maven多模块项目

一个简单的Java Web项目,Maven模块结构是这样的:

上述示意图中,有一个父项目(parent)聚合很多子项目(mytest-controller,mytest-util, mytest-dao, mytest-service, mytest-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。

父项目声明打包类型等:


1

2

3

4

<groupId>my.test</groupId>

<artifactId>mytest-parent</artifactId>

<version>1.0</version>

<packaging>pom</packaging>

 

声明各个子模块:


1

2

3

4

5

6

7

8

<modules>

        <module>mytest-controller</module>

        <module>mytest-service</module>

        <module>mytest-util</module>

        <module>mytest-dao</module>

        <module>mytest-web-1</module>

        <module>mytest-web-2</module>

</modules>

 

然后在子模块中,声明父工程,子模块中代码如下:


1

2

3

4

5

<parent>

        <groupId>my.test</groupId>

        <artifactId>mytest-util</artifactId>

        <version>1.0</version>

</parent>

一般来说,项目中需要的外部依赖等都在父项目中引入,这样在子项目中省去了不必要的配置。

另外,各个子项目间的依赖在单独的pom.xml中配置,
比如mytest-web项目依赖控制层的mytest-controller,那么就在依赖中单独配置


1

2

3

4

5

<dependency>

            <groupId>my.test<</groupId>

            <artifactId>mytest-controller</artifactId>

            <version>1.0</version>

</dependency>

这就需要在项目拆分和架构之前需要理清各个模块间的依赖关系。

2.在最后的Web模块如何打包

如果是单个War项目,使用普通的构建方式即可,需要注意的是如果项目中包含多个war的子模块,

需要使用maven的maven-war-plugin插件的overlays属性来处理,最终主web项目pom.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<build>

        <finalName>xhcms</finalName>

        <plugins>

            <!-- 合并多个war --> 

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-war-plugin</artifactId>

                <version>2.4</version>

                <configuration>

                    <overlays>

                        <overlay>

                            <groupId>my.test</groupId>

                            <artifactId>my-test-web-1</artifactId>

                            <excludes>

                                <exclude>WEB-INF/web.xml</exclude>

                            </excludes>

                            <!-- 目标路径 -->

                            <targetPath>test</targetPath>

                        </overlay>

                    </overlays>

                </configuration>

            </plugin>

        </plugins>

    </build>

  

3.如何在IDE中启动和调试

如果项目配置正确,那么直接使用Eclipse的server插件,把最后的web项目部署到服务器中就可以正常启动和调试。

 

时间: 2024-05-17 11:13:34

Maven使用笔记(六)使用Maven进行多模块拆分的相关文章

MAVEN学习笔记之私服Nexus(2)

MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Adminisrator path b:修改java的绝对路径 文件bin\jsw\config\wrapper.config 内容wrapper.java.command=E:\IDE\Java\JDK\bin\java c:cmd中 nexus install ;nexus start localhost

Eclipse从零配置Maven环境 笔记

Eclipse配置maven环境笔记 转载请注明:http://blog.csdn.net/kisssun0608/ 前提:先配置好JDK的环境变量,当然最少得配上JAVA_HOME变量,不然会报下面的错. 1.      下载maven http://maven.apache.org/download.cgi,选择的是最新的apache-maven-3.3.3-bin.zip ; 2.      解压后放在指定目录,如D:\\dep_tools\ ; 3.      配置maven的环境变量

MAVEN学习笔记之Maven插件的应用(4)

MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sql-maven-plugin</artifactId> <version>1.5</version> <!-- 使用插件依然可以指定相应的依赖

MAVEN学习笔记之Maven生命周期和插件简介(3)

MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所有文件 post-clean 执行清理后的工作 compile validate generate-sources process-sources generate-resources process-sources process-resources 复制并处理资源文件,至目标目录,准备打包 co

maven学习笔记

maven学习笔记 一 下载对应的maven版本 maven是Apache组织的开源项目,所以我们就不用费劲找各种破解版本了,直接下载就可以了,这里给大家提供一个下载链接Apache Maven 二 配置maven的环境变量 将下载好的maven解压到你相应的文件目录下,这里的环境变量的配置跟java的环境变量的配置是一样的,就是将maven下的lib目录在Path中配置好. 配置好环境变量后在CMD命令下输入mvn -version就会出现下图所示内容: 三 配置maven的本地仓库 在mav

Maven使用笔记(一)Maven安装及常用命令

1.Windows下安装Maven 首先去下载Maven安装包,http://maven.apache.org/download.cgi, 目前最新版本是 Maven 3.2.3 . 解压到本地,可以看到目录结构如下: 配置环境变量,添加系统变量"M2_HOME", 路径为解压到本地的Maven文件夹路径. 在path变量后添加%M2_HOME%\bin 注意:新加的值前要有分号.  安装完成后,在命令行下执行下面的命令:mvn -v 如果输出如下信息,则安装成功. 2.Maven初体

Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服

1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地, 而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程. 很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用? 这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目

Maven使用笔记(七)Maven使用问题记录

1.Java-maven异常-cannot be cast to javax.servlet.Filter 报错  tomcat 启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,报错的Filter实现了javax.servlet.Filter接口,Filter是在servlet-api.jar里. 解决这个问题的方法就是对于servlet-ap.jar 使用 <scope>标签,编译的时候用到s

Maven使用笔记(三)Maven的工作原理

概述 Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑. Maven是基于约定优于配置的思想来管理代码目录的.Maven的核心插件使用了一组通用的约定,以用来编译源代码,打包可分发的构件,生成Web站点,以及许多其他过程.约定的好处是使事情简单化. 默认约定 默认源码:${basedir}/src/main/java 资源文件:${basedir}/src/main/resources 测试代码:$