myeclipse+maven实现多模块项目struts+spring+mybatis
2016-06-15 00:00
661 查看
开发环境: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项目
创建后修改pom文件,将项目的打包方式修改为pom方式
这边可以看到,笔者创建此web项目时,选择先创建一个java项目,然后再为其添加web特性(笔者试过直接创建web类型,但一直报错,可能是环境原因,有兴趣可以试试,第一步不要勾选createa simple project)。
创建ssm-atomic的步骤一样,不多说
完成后,我们看一下父项目ssm的pom文件,多了如下结构
[html]
viewplain
copy
print
?
<</span>modules>
<</span>module>ssm-web</</span>module>
<</span>module>ssm-atomic</</span>module>
</</span>modules>
若将javaEE的jar添加的buildpath,可能会导致后面maven打包时,无法将javaEE的jar拷贝到项目lib目录下。
那javaEE的包哪里来呢?在ssm项目中添加
[html]
viewplain
copy
print
?
<</span>dependency>
<</span>groupId>org.apache.geronimo.specs</</span>groupId>
<</span>artifactId>geronimo-servlet_2.4_spec</</span>artifactId>
<</span>version>1.1.1</</span>version>
</</span>dependency>
可看到添加web特性后,项目路径如下,很熟悉了吧
修改ssm-web的pom文件,添加packaging方式为war(默认打包的方式是jar)
[html]
viewplain
copy
print
?
<</span>parent>
<</span>artifactId>ssm</</span>artifactId>
<</span>groupId>com.tch</</span>groupId>
<</span>version>${project.version}</</span>version>
</</span>parent>
<</span>artifactId>ssm-web</</span>artifactId>
<</span>packaging>war</</span>packaging>
将buildpath中的source文件夹给remove掉,并将output文件夹修改到web模块下web-inf/classes文件夹下
重点关注ssm-web项目的parent标签
[html]
viewplain
copy
print
?
<</span>parent>
<</span>artifactId>ssm</</span>artifactId>
<</span>groupId>com.tch</</span>groupId>
<</span>version>${project.version}</</span>version>
</</span>parent>
<</span>artifactId>ssm-web</</span>artifactId>
其配置的是该模块所属的父级项目,子模块的pom文件是继承字父级的pom文件的,所以在父级pom中定义的dependencies在子模块中可以直接引用,模块的属性也只需定义一个artifactId就可以了,groupId和version可以从父级继承,relativePath配置是父级pom.xml文件的相对路径,一般可以省略
在父级项目pom文件中增加上运行struts2+spring+mybatis+mysql依赖jar的dependency,在子模块中即可依赖使用。不赘述,参考源码
ssm-web为web层,包括jsp、css、js、action控制、事务等
[html]
viewplain
copy
print
?
<</span>dependencies>
<</span>dependency>
<</span>groupId>com.tch</</span>groupId>
<</span>artifactId>ssm-atomic</</span>artifactId>
<</span>version>${project.version}</</span>version>
</</span>dependency>
</</span>dependencies>
说明:可能遇到ssm-atomic将会被打成jar包,放到ssm-web的lib下。也就是说ssm-atomic项目的修改,不会立即生效。右击ssm-web设置静态依赖
如上图:ssm-atomic中spring_ssm_atomic.xml配置了数据源、以及dao的bean;它被ssm-web的applicationContext.xml引用。我们知道ssm-atomic最终将被
打成一个jar包,那applicationContext.xml是如何引用jar包中的配置文件的呢?
[html]
viewplain
copy
print
?
<</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包的配置文件时推荐这样写,以避免冲突
并运行父工程ssm的pom文件,如下图
发现war包带版本号,开发很不方便。
添加<<span style="color:rgb(63, 127, 127);">finalName>ssm</<span style="color:rgb(63, 127, 127);">finalName>,重新打一次包
可参考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文件,多了如下结构
[html]
viewplain
copy
?
<</span>modules>
<</span>module>ssm-web</</span>module>
<</span>module>ssm-atomic</</span>module>
</</span>modules>
3.为ssm-web添加web特性
在src/main下新建目录webapp若将javaEE的jar添加的buildpath,可能会导致后面maven打包时,无法将javaEE的jar拷贝到项目lib目录下。
那javaEE的包哪里来呢?在ssm项目中添加
[html]
viewplain
copy
?
<</span>dependency>
<</span>groupId>org.apache.geronimo.specs</</span>groupId>
<</span>artifactId>geronimo-servlet_2.4_spec</</span>artifactId>
<</span>version>1.1.1</</span>version>
</</span>dependency>
可看到添加web特性后,项目路径如下,很熟悉了吧
修改ssm-web的pom文件,添加packaging方式为war(默认打包的方式是jar)
[html]
viewplain
copy
?
<</span>parent>
<</span>artifactId>ssm</</span>artifactId>
<</span>groupId>com.tch</</span>groupId>
<</span>version>${project.version}</</span>version>
</</span>parent>
<</span>artifactId>ssm-web</</span>artifactId>
<</span>packaging>war</</span>packaging>
4.父项目ssm配置
右击项目,打开属性将buildpath中的source文件夹给remove掉,并将output文件夹修改到web模块下web-inf/classes文件夹下
重点关注ssm-web项目的parent标签
[html]
viewplain
copy
?
<</span>parent>
<</span>artifactId>ssm</</span>artifactId>
<</span>groupId>com.tch</</span>groupId>
<</span>version>${project.version}</</span>version>
</</span>parent>
<</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文件,添加[html]
viewplain
copy
?
<</span>dependencies>
<</span>dependency>
<</span>groupId>com.tch</</span>groupId>
<</span>artifactId>ssm-atomic</</span>artifactId>
<</span>version>${project.version}</</span>version>
</</span>dependency>
</</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包中的配置文件的呢?
[html]
viewplain
copy
?
<</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.最后编译打包
并运行父工程ssm的pom文件,如下图发现war包带版本号,开发很不方便。
添加<<span style="color:rgb(63, 127, 127);">finalName>ssm</<span style="color:rgb(63, 127, 127);">finalName>,重新打一次包
相关文章推荐
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- 25个Java机器学习工具&库
- java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
- 使用JDK开发WebService
- 如何导入MAVEN项目到MyEclipse中
- Hadoop2.2.0 HA + Jdk1.8.0 + Zookeeper3.4.5 + Hbase0.98 集群搭建详细过程(服务器集群)
- Spring JPA经验汇总
- spring对数据库的操作
- Java中Properties类的操作
- Jimoshi_Struts2 框架学习(三)--valueStack和ognl、struts2验证、struts2文件上传和下载
- Spring整合rabbitmq
- Windows配置Java开发环境
- eclipse中某工程的断点进不去问题,折腾了N个小时才找到原因,郁闷
- JSON 在java中的使用Json
- java笔记—多线程编程 Thread
- Eclipse背景颜色修改
- java笔记—封装、继承、多态[面向对象的三大特性]
- Struts2环境配置
- Java web项目开发需要掌握哪些技术?
- Java四种读取和创建XML文档的例子