myeclipse+maven实现多模块项目struts+spring+mybatis 「爱情、让人受尽委屈。」 2022-06-18 09:42 108阅读 0赞 ## myeclipse+maven实现多模块项目struts+spring+mybatis ## ![此博文包含图片][sg_trans.gif] (2014-02-13 01:54:57) ![sg_trans.gif][]转载▼ <table style="margin:0px; padding:0px"> <tbody> <tr> <td style="margin:0px; padding:0px 10px 0px 0px; font-family:宋体; vertical-align:top"> <span style="color:rgb(135,135,135)">标签:</span> <h3 style="margin:0px 5px 0px 0px; padding:0px; border:0px; list-style:none; display:inline; font-size:12px; font-weight:normal"> <a href="http://search.sina.com.cn/?c=blog&q=it&by=tag" style="text-decoration:none; color:rgb(82,102,115); white-space:nowrap" rel="nofollow">it</a></h3> </td> <td style="margin:0px; padding:0px; font-family:宋体; vertical-align:top; width:220px; white-space:nowrap"> <span style="color:rgb(135,135,135)">分类:</span> <a href="http://blog.sina.com.cn/s/articlelist_2387825697_4_1.html" style="text-decoration:none; color:rgb(82,102,115)" rel="nofollow">JAVA</a></td> </tr> </tbody> </table> 本文中创建maven项目,不使用命令,完全用myeclipse实现,个人感觉这样新手更容易接受! 开发环境:myeclipse 8.5+maven(非myeclipse自带插件) 可参考[http://blog.csdn.net/qq964166471/article/details/18708735][http_blog.csdn.net_qq964166471_article_details_18708735]完成配置。 目标:期望有两个web项目A和B,访问同一个数据库,即依赖同一个java项目C 这里借用一下前辈的理解:其实是将业务分为多个模块,各个模块之间相互独立,甚至每个模块可以独立运行。查询若干资料可以利用maven创建model,然后整合为一个项目,今天先介绍一下基于maven的多模块项目搭建。 多模块其实就是按照层级的管理构建,项目包含一个pom.xml文件和若干个模块,每个模块有一个单独的pom.xml文件,通过pom的依赖和继承关系来构建项目层次。 先看下项目依赖关系:父项目ssm有两个模块,分别是web和java项目 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis] ## 1.创建maven项目ssm ## ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 1] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 2] 创建后修改pom文件,将项目的打包方式修改为pom方式 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 3] ## 2.maven项目ssm添加maven module ## ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 4] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 5] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 6] 这边可以看到,笔者创建此web项目时,选择先创建一个java项目,然后再为其添加web特性(笔者试过直接创建web类型,但一直报错,可能是环境原因,有兴趣可以试试,第一步不要勾选create a simple project)。 创建ssm-atomic的步骤一样,不多说 完成后,我们看一下父项目ssm的pom文件,多了如下结构 **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 7] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 8] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 9] 若将javaEE的jar添加的buildpath,可能会导致后面maven打包时,无法将javaEE的jar拷贝到项目lib目录下。 那javaEE的包哪里来呢?在ssm项目中添加 **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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特性后,项目路径如下,很熟悉了吧 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 10] 修改ssm-web的pom文件,添加packaging方式为war(默认打包的方式是jar) **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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文件夹下 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 11] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 12] 重点关注ssm-web项目的parent标签 **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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对象,结构如下 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 13] ssm-web为web层,包括jsp、css、js、action控制、事务等 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 14] ### 这里需要说明一下:ssm-web依赖ssm-atomic ### 原因不多说,说说怎么做的。首先打开ssm-web的pom文件,添加 **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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> ** ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 15] 说明:可能遇到ssm-atomic将会被打成jar包,放到ssm-web的lib下。也就是说ssm-atomic项目的修改,不会立即生效。右击ssm-web设置静态依赖 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 16] ### 这边再说一下spring的配置文件吧。 ### ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 17] 如上图:ssm-atomic中spring\_ssm\_atomic.xml配置了数据源、以及dao的bean;它被ssm-web的applicationContext.xml引用。我们知道ssm-atomic最终将被 打成一个jar包,那applicationContext.xml是如何引用jar包中的配置文件的呢? **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 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.最后编译打包 ## 并运行父工程ssm的pom文件,如下图 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 18] ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 19] 发现war包带版本号,开发很不方便。 添加<<span style="color: rgb(63, 127, 127);">finalName>ssm</<span style="color: rgb(63, 127, 127);">finalName>,重新打一次包 ![myeclipse+maven实现多模块项目struts+spring+mybatis][myeclipse_maven_struts_spring_mybatis 20] [sg_trans.gif]: /images/20220618/cd6605819e7b426f91d6f23d93930424.png [http_blog.csdn.net_qq964166471_article_details_18708735]: http://blog.csdn.net/qq964166471/article/details/18708735 [myeclipse_maven_struts_spring_mybatis]: /images/20220618/9d703c9766084ed78fed7bf0415a34ef.png [myeclipse_maven_struts_spring_mybatis 1]: /images/20220618/8461feef495f42de82fa2a915dd76007.png [myeclipse_maven_struts_spring_mybatis 2]: /images/20220618/b5ff6f7d72324d68adab45e427ea824d.png [myeclipse_maven_struts_spring_mybatis 3]: /images/20220618/229bcdf20221469dbdad19bf0f66a659.png [myeclipse_maven_struts_spring_mybatis 4]: /images/20220618/e4f059ef06bb4000a40ff3196bfcdfdc.png [myeclipse_maven_struts_spring_mybatis 5]: /images/20220618/7aa105715eb948e9a3e43aea0379f9ec.png [myeclipse_maven_struts_spring_mybatis 6]: /images/20220618/0840e4fa101a46dca34ebad960b0b1d3.png [view plain]: http://blog.csdn.net/qq964166471/article/details/18797879# [CODE]: https://code.csdn.net/assets/CODE_ico.png [CODE_CODE]: https://code.csdn.net/snippets/172712 [ico_fork.svg]: https://code.csdn.net/assets/ico_fork.svg [ico_fork.svg 1]: https://code.csdn.net/snippets/172712/fork [myeclipse_maven_struts_spring_mybatis 7]: /images/20220618/3ad8591b5a464c35a223808a6a42ebd9.png [myeclipse_maven_struts_spring_mybatis 8]: /images/20220618/1d27329f04fb411b983bd939748e1da5.png [myeclipse_maven_struts_spring_mybatis 9]: /images/20220618/fcecb7fb43264ad7a309c6ca24fb93ba.png [myeclipse_maven_struts_spring_mybatis 10]: /images/20220618/b0bccd1868894703b8c126b54485ca39.png [myeclipse_maven_struts_spring_mybatis 11]: /images/20220618/090fe97cd44846cc97c31b812fa0dcf1.png [myeclipse_maven_struts_spring_mybatis 12]: /images/20220618/ccebec4598ec4945a3d37b21123a8069.png [myeclipse_maven_struts_spring_mybatis 13]: /images/20220618/e3b5915f5d0d4ead9bb93fa3b0b15dec.png [myeclipse_maven_struts_spring_mybatis 14]: /images/20220618/e2f7cd2b59864d7d8af67e720b195535.png [myeclipse_maven_struts_spring_mybatis 15]: /images/20220618/2dcc9918044d456a9799ce0201e34445.png [myeclipse_maven_struts_spring_mybatis 16]: /images/20220618/674d9faf860d4743868c316e36e09e58.png [myeclipse_maven_struts_spring_mybatis 17]: /images/20220618/9f83d5d4af6b4a55be0420bfc3d45064.png [myeclipse_maven_struts_spring_mybatis 18]: /images/20220618/59558ac8381647fd82e56f98a6ee70a7.png [myeclipse_maven_struts_spring_mybatis 19]: /images/20220618/ea393a7c8ec14eccb2a32696ca6953f2.png [myeclipse_maven_struts_spring_mybatis 20]: /images/20220618/ca9af20b0b8c4a6baa4feca2a67c8618.png
还没有评论,来说两句吧...