myeclipse+maven实现多模块项目struts+spring+mybatis

转载 2015年07月11日 06:20:33

开发环境:myeclipse8.5+maven(非myeclipse自带插件)

可参考http://blog.csdn.net/qq964166471/article/details/18708735完成配置。

 

目标:期望有两个web项目A和B,访问同一个数据库,即依赖同一个java项目C

这里借用一下前辈的理解:其实是将业务分为多个模块,各个模块之间相互独立,甚至每个模块可以独立运行。查询若干资料可以利用maven创建model,然后整合为一个项目,今天先介绍一下基于maven的多模块项目搭建。

多模块其实就是按照层级的管理构建,项目包含一个pom.xml文件和若干个模块,每个模块有一个单独的pom.xml文件,通过pom的依赖和继承关系来构建项目层次。

先看下项目依赖关系:父项目ssm有两个模块,分别是web和java项目

1.创建maven项目ssm

创建后修改pom文件,将项目的打包方式修改为pom方式

2.maven项目ssm添加mavenmodule

这边可以看到,笔者创建此web项目时,选择先创建一个java项目,然后再为其添加web特性(笔者试过直接创建web类型,但一直报错,可能是环境原因,有兴趣可以试试,第一步不要勾选createa simple project)。

创建ssm-atomic的步骤一样,不多说

完成后,我们看一下父项目ssm的pom文件,多了如下结构

  1. <</span>modules>  
  2.     <</span>module>ssm-web</</span>module>  
  3.     <</span>module>ssm-atomic</</span>module>  
  4.   </</span>modules>  


 

 

3.为ssm-web添加web特性

在src/main下新建目录webapp

 

 

若将javaEE的jar添加的buildpath,可能会导致后面maven打包时,无法将javaEE的jar拷贝到项目lib目录下。

那javaEE的包哪里来呢?在ssm项目中添加

  1. <</span>dependency>  
  2.           <</span>groupId>org.apache.geronimo.specs</</span>groupId>  
  3.           <</span>artifactId>geronimo-servlet_2.4_spec</</span>artifactId>  
  4.           <</span>version>1.1.1</</span>version>  
  5.     </</span>dependency>  


可看到添加web特性后,项目路径如下,很熟悉了吧

 

修改ssm-webpom文件,添加packaging方式为war(默认打包的方式是jar

 

  1. <</span>parent>  
  2.     <</span>artifactId>ssm</</span>artifactId>  
  3.     <</span>groupId>com.tch</</span>groupId>  
  4.     <</span>version>${project.version}</</span>version>  
  5.   </</span>parent>  
  6.   <</span>artifactId>ssm-web</</span>artifactId>  
  7.   <</span>packaging>war</</span>packaging>  


 

 

 4.父项目ssm配置

右击项目,打开属性

buildpath中的source文件夹给remove掉,并将output文件夹修改到web模块下web-inf/classes文件夹下

 

重点关注ssm-web项目的parent标签

  1. <</span>parent>  
  2.     <</span>artifactId>ssm</</span>artifactId>  
  3.     <</span>groupId>com.tch</</span>groupId>  
  4.     <</span>version>${project.version}</</span>version>  
  5.   </</span>parent>  
  6.   <</span>artifactId>ssm-web</</span>artifactId>  

其配置的是该模块所属的父级项目,子模块的pom文件是继承字父级的pom文件的,所以在父级pom中定义的dependencies在子模块中可以直接引用,模块的属性也只需定义一个artifactId就可以了,groupId和version可以从父级继承,relativePath配置是父级pom.xml文件的相对路径,一般可以省略

在父级项目pom文件中增加上运行struts2+spring+mybatis+mysql依赖jar的dependency,在子模块中即可依赖使用。不赘述,参考源码

5.开发ssm-atomic和ssm-web

ssm-atomic为公共持久层,包括dao、spring数据源、sqlmap、po对象,结构如下

 

ssm-web为web层,包括jsp、css、js、action控制、事务等

这里需要说明一下:ssm-web依赖ssm-atomic

原因不多说,说说怎么做的。首先打开ssm-web的pom文件,添加

  1. <</span>dependencies>  
  2.     <</span>dependency>  
  3.         <</span>groupId>com.tch</</span>groupId>  
  4.         <</span>artifactId>ssm-atomic</</span>artifactId>  
  5.         <</span>version>${project.version}</</span>version>  
  6.     </</span>dependency>  
  7.   </</span>dependencies>  

说明:可能遇到ssm-atomic将会被打成jar包,放到ssm-web的lib下。也就是说ssm-atomic项目的修改,不会立即生效。右击ssm-web设置静态依赖

这边再说一下spring的配置文件吧。

如上图:ssm-atomic中spring_ssm_atomic.xml配置了数据源、以及dao的bean;它被ssm-web的applicationContext.xml引用。我们知道ssm-atomic最终将被

打成一个jar包,那applicationContext.xml是如何引用jar包中的配置文件的呢?

  1. <</span>import resource="classpath*:/spring_ssm_atomic.xml"/>  

classpath两种用法:
classpath*:spring_ssm_atomic.xml会加入本项目及所有jar包根目录下的spring_ssm_atomic.xml文件,跨jar包依赖时使用
classpath:spring_ssm_atomic.xml只加入本项目根目录下的spring_ssm_atomic.xml文件,不依赖其它jar包的配置文件时推荐这样写,以避免冲突

 


6.最后编译打包

并运行父工程ssmpom文件,如下图

 

 

发现war包带版本号,开发很不方便。

添加<<span style="color:rgb(63, 127, 127);">finalName>ssm</<span style="color:rgb(63, 127, 127);">finalName>,重新打一次包

 

 



myeclipse+maven实现多模块项目struts+spring+mybatis,详解

本文中创建maven项目,不使用命令,完全用myeclipse实现,个人感觉这样新手更容易接受!   开发环境:myeclipse 8.5+maven(非myeclipse自带插件)   目标:期望有...
  • qq964166471
  • qq964166471
  • 2014年01月27日 10:53
  • 9589

eclipse +maven实现多模块项目struts+spring+mybatis

开发环境:myeclipse 8.5+maven(非myeclipse自带插件) 可参考http://blog.csdn.net/qq964166471/article/details/1870...
  • li1246994520
  • li1246994520
  • 2015年12月17日 10:07
  • 666

maven多模块项目部署

maven多模块项目的部署(启动是通过运行主main方法): 1  在linux上直接建立文件夹,如mkdir project 2 之后cd project,同理用mkdir命令建立bin、c...
  • zyzn1425077119
  • zyzn1425077119
  • 2017年05月23日 17:29
  • 327

Maven多模块项目经验

最近被一个多模块项目搞的头晕眼花,最后经过多次摸索终于发现了如何使用maven来创建多模块的项目。现在把一些经验和教训总结一下供后来人借鉴和指教。 maven的作用 毋庸置疑,maven是用来...
  • alexanderzjs
  • alexanderzjs
  • 2016年12月22日 14:07
  • 1689

IntelliJ IDEA创建maven多模块项目

IntelliJ IDEA创建maven多模块项目 项目主要分成3个模块,wms-root为父模块,wms-core和wms-app(webapp类型的模块)为子模块。 一、P...
  • luck_h
  • luck_h
  • 2017年08月14日 14:47
  • 442

基于maven使用IDEA创建多模块项目

一 项目工程目录 二 创建父工程 三 创建公共工具类 三 创建开发项目 四 创建开发项目子模块 五 运行项目 鉴于最近学习一个分布式项目的开发,讲一下关于使用IntelliJ IDEA基于Maven创...
  • williamHappy
  • williamHappy
  • 2017年01月12日 12:40
  • 33838

myeclipse 2013下使用maven 3.2.1构建多模块项目

在使用myeclipse操作maven之前 将myeclipse自带的maven版本
  • undergrowth
  • undergrowth
  • 2014年05月10日 23:46
  • 1260

java—(3)maven构建项目(多模块项目)

在eclipse下构建maven项目,该项目由多个子模块组成。 1.创建一个父项目 NEW -->project-->maven-->maven Project,点击下一步,进入new maven...
  • szh1124
  • szh1124
  • 2015年03月17日 14:07
  • 755

Gradle构建多模块项目

转载自:http://blog.javachen.com/2015/01/07/build-multi-module-project-with-gradle.html 废话不多说,直接进入主题。...
  • wulong710
  • wulong710
  • 2016年01月27日 18:17
  • 1235

myeclipse通过svn提交导入maven多模块项目

多模块项目接口 ax-parent --ax-framework --ax-service --ax-web-admin ax-parent是父模块项目,其他三个是三个模块, 1、svn提...
  • StruggleRookie
  • StruggleRookie
  • 2017年12月19日 13:29
  • 258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:myeclipse+maven实现多模块项目struts+spring+mybatis
举报原因:
原因补充:

(最多只允许输入30个字)