开发者社区> 左羽> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MyEclipse的多模块Maven web(ssm框架整合)

简介:   Maven的多模块可以让项目结构更明确,提高功能的内聚,降低项目的耦合度,真正的体现出分层这一概念。   我们在操作中,要明白为什么这样做,要了解到更深的层次,这样,我们就不限于个别软件了。   话不多说,直入主题:   如果对Maven还不够熟悉,请看该博客:Maven基础   整个项目做完之后的结构是这样的:         在开始之前我放出这两张图是maven多模块项目做完后的目录结构,以免大家被eclipse的结构迷惑了。
+关注继续查看

  Maven的多模块可以让项目结构更明确,提高功能的内聚,降低项目的耦合度,真正的体现出分层这一概念。

  我们在操作中,要明白为什么这样做,要了解到更深的层次,这样,我们就不限于个别软件了。

  话不多说,直入主题

  如果对Maven还不够熟悉,请看该博客:Maven基础

  整个项目做完之后的结构是这样的:

  

  

  在开始之前我放出这两张图是maven多模块项目做完后的目录结构,以免大家被eclipse的结构迷惑了。

  首先,新建一个maven项目,如图:

  

  选project,注意是Create a simple project,然后特别注意,root目录的聚合模块的packing是pom!!!

  完后在该maven项目上新建模块:

  

  在这里,service层使用简单的maven-archetype-quickstart即可,packing使用jar类型,web层则使用maven-archetype-webapp的web项目,packing使用war类型。在这里,jar类型是为了让其他项目引用更方便,而war类型是为了能在服务器部署它。

  结构说明

  到了这一步,我们已经将这些模块建好了,接下来我要深入一下项目结构,以及多模块的原理,然后我们再配置pom文件。

  

  这是一个项目大概运行机制,ssm-integration作为聚合父级项目,就是为了管理其他子项目(模块),多模块就是基于聚合父级项目的。子模块service是对数据处理的模块,在这里是ssm框架,那么它负责完成对数据库的操作的封装(大概结构,具体不细说),然后对外暴露一个接口供web模块调用即可。也就是当web模块引用了ssm-service.jar之后,供web项目调用的只有你对外暴露的接口,这就真正实现分层。而web模块,只负责servlet、视图模型、前端页面和一些简单的逻辑,需要时调用ssm-service.jar的接口方法就行了。当对项目进行部署时,只需部署ssm-web即可,因为ssm-integration仅仅负责管理,你可以将它理解为承载着多模块的大框架,而ssm-service已经打包给ssm-web了(ssm-web里面已经有ssm-service了)。

  pom.xml分析

  在这之前,我声明一下,聚合和继承是可以分开的,只是大家想方便一下,所以统称为父项目。

  我们开始看pom的配置,首先时父项目的pom.xml(这里只截取一部分,了解方法为重点):

  父类pom.xml分析


  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5     <groupId>cn.zuoyu.ssm</groupId>
  6     <artifactId>ssm-integration</artifactId>
  7     <version>0.0.1-SNAPSHOT</version>
  8     <packaging>pom</packaging>
  9     <name>ssm-integration</name>
 10     <description>spring&springMVC&mybatis的整合</description>
 11 
 12     <modules>
 13         <module>ssm-service</module>
 14         <module>ssm-controller Maven Webapp</module>
 15     </modules>
 16 
 17     <properties>
 18         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 19         <spring.version>4.3.8.RELEASE</spring.version>
 20     </properties>
 21 
 22     <build>
 23         <pluginManagement>
 24             <plugins>
 25                 <!-- 编译插件 -->
 26                 <plugin>
 27                     <groupId>org.apache.maven.plugins</groupId>
 28                     <artifactId>maven-compiler-plugin</artifactId>
 29                     <version>2.3.2</version>
 30                     <configuration>
 31                         <source>1.8</source>
 32                         <target>1.8</target>
 33                     </configuration>
 34                 </plugin>
 35 
 36                 <!-- 用UTF-8编码处理资源文件 -->
 37                 <plugin>
 38                     <groupId>org.apache.maven.plugins</groupId>
 39                     <artifactId>maven-resources-plugin</artifactId>
 40                     <version>2.6</version>
 41                     <configuration>
 42                         <encoding>UTF-8</encoding>
 43                     </configuration>
 44                 </plugin>
 45             </plugins>
 46         </pluginManagement>
 47         <!-- <resources>
 48                 <!--资源位置配置-->
 49             <resource>
 50                 <directory>src/main/java</directory>
 51                 <includes>
 52                     <include>**/*.xml</include>
 53                 </includes>
 54             </resource>
 55             <!--指定资源的位置-->
 56             <resource>
 57                 <directory>src/main/resources</directory>
 58             </resource>
 59         </resources> -->
 60     </build>
 61 
 62 
 63     <dependencyManagement>
 64         <dependencies>
 65             <!-- 单元测试 -->
 66             <dependency>
 67                 <groupId>junit</groupId>
 68                 <artifactId>junit</artifactId>
 69                 <version>4.12</version>
 70                 <scope>test</scope>
 71             </dependency>
 72             <!-- spring核心包 -->
 73             <dependency>
 74                 <groupId>org.springframework</groupId>
 75                 <artifactId>spring-core</artifactId>
 76                 <version>${spring.version}</version>
 77             </dependency>
 78 
 79             <!-- 扫描用包 -->
 80             <dependency>
 81                 <groupId>org.springframework</groupId>
 82                 <artifactId>spring-context</artifactId>
 83                 <version>${spring.version}</version>
 84             </dependency>
 85 
 86             <!-- 缓存扫描用包 -->
 87             <dependency>
 88                 <groupId>org.springframework</groupId>
 89                 <artifactId>spring-context-support</artifactId>
 90                 <version>${spring.version}</version>
 91             </dependency>
 92 
 93             <!-- bean支持 -->
 94             <dependency>
 95                 <groupId>org.springframework</groupId>
 96                 <artifactId>spring-beans</artifactId>
 97                 <version>${spring.version}</version>
 98             </dependency>
 99     </dependencyManagement>
100 </project>


  在这里,<modules>xxx<modules>是将需要管理的模块放进去,放进去的模块归该聚合项目管理。例如<pluginManagement>xxx</pluginManagement>或<dependencyManagement>xxx</dependencyManagement>是父类里独有的,为的是统一资源包,方便管理。
  

   子类pom.xml分析

  看一下子类的代码,以web模块为例

  

 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>cn.zuoyu.ssm</groupId>
 8         <artifactId>ssm-integration</artifactId>
 9         <version>0.0.1-SNAPSHOT</version>
10     </parent>
11     <artifactId>ssm-controller</artifactId>
12     <packaging>war</packaging>
13     <name>ssm-controller</name>
14     <url>http://maven.apache.org</url>
15 
16 
17     <dependencies>
18 
19         <dependency>
20             <groupId>junit</groupId>
21             <artifactId>junit</artifactId>
22         </dependency>
23         <!-- springMVC核心包 -->
24         <dependency>
25             <groupId>org.springframework</groupId>
26             <artifactId>spring-webmvc</artifactId>
27         </dependency>
28 
29         <!-- jstl支持 -->
30         <dependency>
31             <groupId>jstl</groupId>
32             <artifactId>jstl</artifactId>
33         </dependency>
34 
35         <dependency>
36             <groupId>org.apache.taglibs</groupId>
37             <artifactId>taglibs-standard-impl</artifactId>
38         </dependency>
39 
40         <dependency>
41             <groupId>org.apache.taglibs</groupId>
42             <artifactId>taglibs-standard-spec</artifactId>
43         </dependency>
44         
45         <!-- 对service的依赖 -->
46         <dependency>
47             <groupId>${project.groupId}</groupId>
48             <artifactId>ssm-service</artifactId>
49             <version>${project.version}</version>
50         </dependency>
51     </dependencies>
52     <build>
53         <plugins>
54             <!-- 编译插件 -->
55             <plugin>
56                 <groupId>org.apache.maven.plugins</groupId>
57                 <artifactId>maven-compiler-plugin</artifactId>
58             </plugin>
59 
60             <!-- 编码设置 -->
61             <plugin>
62                 <groupId>org.apache.maven.plugins</groupId>
63                 <artifactId>maven-resources-plugin</artifactId>
64             </plugin>
65         </plugins>
66         <finalName>ssm-controller</finalName>
67     </build>
68 </project>

  你会发现多了<parent></parent>标签,这里面写的就是它要继承的父项目。你还会发现项目没有声明groupId和version,因为它已经有父项目了,父项目已经管理了它的来源和版本号。你还会发现plugin插件和dependency依赖没有声明version,这就是父项目里写pluginManagement和dependencyManagement的优点,父项目里的这个如果子项目没有声明则不会导入该依赖或插件,如果需要,只需声明groupId和artifactId即可,方便管理。另外,必须将该项目依赖的其他项目的pack引用过来,不然多模块就失去了意义,根本运行不起来。

   注意:

  在maven多模块项目里,子项目的classpath共用的。

   部署:

  在IntelliJ IDEA里部署MavenWeb项目和MyEclipse部署是有差异的,MyEclipse要很简单:

  

  就好了,只部署ssm-web即可。

  到了这一步,还差很关键的一部,就是在你运行之前,要保证你的maven仓库有ssm-service,就是你service层的jar包,不然ssm-web根本找不到ssm-service.jar,所以,我们要这样:

  

  否则无法运行。

  然后...

  看一下整体结构:

  

 

  就可以运行了...

  若有不对的地方欢迎+感谢评论指出或邮件我  zuoyuip@qq.com

  共同进步

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Eclipse-安装Freemarker插件
引言   我们在使用 Eclipse 开发 Java Web 程序时会使用 Freemarker 模板引擎,以帮助我们快速、便捷和结构化的创建页面,但是 Eclipse 显示生成的*.ftl文件如同在普通文本编辑器上打开一样,不方便查看,本文主要介绍如何在 Eclipse 上安装 Freemarker 插件方便查看*.ftl文件。
2423 0
Eclipse安装Sonarlint插件
这里安装的是Sonarlint3.6。插件安装非常简单。插件比Sonar更为简单快捷。 一、首先通过点击Eclipse上方Help菜单会出现一个下拉列表,点击其中的Eclipse MarketPlace,会出现如下界面   二、通过搜索框找到SonarLint,点击Install,接下来就是下一步下一步到最后重启Eclipse,非常简单,这里不再赘述。
2211 0
在eclipse中安装jadclipse的反编译插件
1:首先确定要下载的版本:    下载jadclipse_3.1.0.jar版本,该版本支持eclipse3.1M6~3.2M2     下载jadclipse_3.2.0.jar版本,该版本支持eclipse3.2M3和eclipse3.2M4.     下载jadclipse_3.2.4.jar版本,该版本支持eclipse3.2M5~3.3M5 版本不匹配的话会出现错误。
884 0
Eclipse_插件_02_jd-eclipse插件的安装
1.去官网下载 jd-eclipse插件  2.解压后的文件夹A放到eclipse的drops文件夹下 3.删掉多余文件,确保文件夹A下只有plugin 和 freature 两个文件夹 4.清空osgi文件夹     注:若解压后的文件只有一个jar,则将此jar放到drops文件夹下...
1147 0
eclipse安装反编译插件
<p>在开发过程中经常要导入一些jar包,有的时候想要看一下源码却发现点进去了看不到,原因可能是没有在eclipse中安装反编译插件,今天我就在自己的eclipse中安装了这个插件,步骤如下:</p> <p>1、下载<span style="color:rgb(51,51,51)">jadClipse</span> <span style="color:rgb(51,51,51)">
1189 0
eclipse集成html5插件
1. 在线安装:Help-&gt;Install New Software...-&gt;Add...-&gt; Name: "Aptana",  Location: http://download.aptana.com/studio3/plugin/install【正确地址】 下载完毕,按步骤一步一步next,最后重启 Eclipse 。 2.给Apt
974 0
Google 发布 Eclipse 插件.支持GWT 和 APP
好高兴.   内容如标题:     http://code.google.com/intl/en/eclipse/   地址.....   自己先顶个.
942 0
+关注
左羽
IT路上的苦行僧
15
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载