- 浏览: 1588869 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
payton321:
dao,util,servie,基础模块应该是maven项目, ...
Maven最佳实践:划分模块 -
AdrainHuang:
深有体会,我这边已经 给项目坑死了,依赖关系太复杂,基本没人敢 ...
Maven最佳实践:管理依赖 -
远方_张涛:
赞赞赞,生动有趣还说明问题
Maven最佳实践:版本管理 -
smartdog:
新的网站访问不了啊~~博主快更新
再见JavaEye -
smartdog:
言简意赅,厉害
Maven最佳实践:遵循约定
《Maven权威指南》第六章. 一个多模块项目 ,以及第七章. 多模块企业级项目 都已翻译完毕。
一个现实生活中的Maven项目只有一个POM文件,那是不现实的。典型的项目会和数据库交互,和Web Service交互,有自己的业务逻辑,暴露Web Service,有命令行应用程序,有Web应用程序……这个时候,必须分一下模块,松散耦合,清晰关联,增加重用等等好处不用多说。这两章内容,就是介绍怎样使用Maven的模块集成及聚合相关功能的。
看一看多模块企业级项目的模块关系图:
这里有一个父模块,一个web应用,一个命令行应用,一个持久化模块,一个业务逻辑模块,一个模型对象模块。基本上,这个图能很典型的代表很多项目的结构了。该图中,展现了模块之间的各种关系,有依赖(dependency),传递性依赖(transitive dependency),子模块(module of),继承(inherits from)。
这里配置子模块的XML片段为:
<modules> <module>simple-command</module> <module>simple-model</module> <module>simple-weather</module> <module>simple-persist</module> <module>simple-webapp</module> </modules>
配置继承的XML片段为:
<parent> <groupId>org.sonatype.mavenbook.ch07</groupId> <artifactId>simple-parent</artifactId> <version>1.0</version> </parent> <artifactId>simple-model</artifactId> <packaging>jar</packaging>
配置依赖的XML片段为:
<dependency> <groupId>org.sonatype.mavenbook.ch07</groupId> <artifactId>simple-model</artifactId> <version>1.0</version> </dependency>
关于传递性依赖,这里做个简单的解释,项目A依赖于项目B,而项目B依赖于项目C,那么项目A就自动会拥有对于项目C的传递性依赖。 如上图中,simple-webapp模块直接依赖于simple-weather模块,而simple-weather模块直接依赖于simple-model模块,那么simple-webapp就拥有对于simple-model的传递性依赖。
第七章的内容,真正涉及Maven的其实不是很多,相反,作者花了很大篇幅介绍使用Hibernate,Spring,Velocity等等较为流行的Java开源框架,这些内容也是实际开发中常常会遇见的。
项目越大,Maven所体现的优势也就越大,要真正在实际项目中使用Maven,那么,这两章内容必定能够很好的帮助你开始。
评论
楼主,又来请教了,关于多模块项目,我的问题是它除了重用以外,还有其它什么好处,也就是我该用什么思路来设计多模块pom。还有个问题是,我按照这个结构做好了A项目,这时候有了新的需求,做一个B项目,B项目该如何加入到A项目中,我想要的方式,就如同插件一般,不需要我重新打包A项目,而且我可以在发布的时候,选择是发布A还是B,或者一起发布,我该怎么做?谢谢。如果我复制一个A项目的结构,这时候module的配置数量会翻翻,以后会让人觉得很难管理。
========================================================
不好意思,楼主,上面的问题,其实你给了答案,刚看到你的另一篇文章,Maven最佳实践:划分模块。我先实践体会一下,再请教。
juvenshun 写道CobraCoder 写道juvenshun,我仔细研究了多模块的配置,但是我有一个问题,始终想不明白,我该如何布局我的webapp项目,例子里只有一个webapp,如果我有多个,我应该如何实现webapp的引用,比如我有一个spring-security项目,包含了登录验证,我写了一个employee管理项目,这时候我需要用不同的角色去登录测试我的employeee webapp,但是我不希望组装测试,因为这样会很麻烦,我只想在eclipse直接运行我的employee项目,就可以获得seciury项目的登录页面,进行登录,测试employee项目,请楼主指教,谢谢!sorry,不太明白你的意思,不过,像你的spring-security这样的模块,应该作为一个jar,而不是webapp,这样多个webapp就可以共用它了。webapp中应该只包含UI相关的东西,这么做之后,你就不需要webapp之间的依赖了。当然,webapp之间的依赖也是可以实现的,使用maven-war-plugin即可,但是,那应该是没有选择的选择。感谢您的回答,是这样的,我的项目有登录的ui,这个ui是放在security项目下的,而employee项目的则是需要security项目提供的登录ui,如果employee项目单独运行,则无法访问到security项目的ui,因为还有其他项目也需要登录ui,所以如果每个项目都放置登录ui,混乱,难于同步。不知道我是否讲明白了。是不是只能采用maven-war-plugin呢?
也许你可以试一下使用SSO(单点登录),登录模块单独部署。或者,就用mavwn-war-plugin吧,它支持web文件(如js/html/jsp)的依赖复用。
CobraCoder 写道juvenshun,我仔细研究了多模块的配置,但是我有一个问题,始终想不明白,我该如何布局我的webapp项目,例子里只有一个webapp,如果我有多个,我应该如何实现webapp的引用,比如我有一个spring-security项目,包含了登录验证,我写了一个employee管理项目,这时候我需要用不同的角色去登录测试我的employeee webapp,但是我不希望组装测试,因为这样会很麻烦,我只想在eclipse直接运行我的employee项目,就可以获得seciury项目的登录页面,进行登录,测试employee项目,请楼主指教,谢谢!sorry,不太明白你的意思,不过,像你的spring-security这样的模块,应该作为一个jar,而不是webapp,这样多个webapp就可以共用它了。webapp中应该只包含UI相关的东西,这么做之后,你就不需要webapp之间的依赖了。当然,webapp之间的依赖也是可以实现的,使用maven-war-plugin即可,但是,那应该是没有选择的选择。
感谢您的回答,是这样的,我的项目有登录的ui,这个ui是放在security项目下的,而employee项目的则是需要security项目提供的登录ui,如果employee项目单独运行,则无法访问到security项目的ui,因为还有其他项目也需要登录ui,所以如果每个项目都放置登录ui,混乱,难于同步。不知道我是否讲明白了。是不是只能采用maven-war-plugin呢?
juvenshun,我仔细研究了多模块的配置,但是我有一个问题,始终想不明白,我该如何布局我的webapp项目,例子里只有一个webapp,如果我有多个,我应该如何实现webapp的引用,比如我有一个spring-security项目,包含了登录验证,我写了一个employee管理项目,这时候我需要用不同的角色去登录测试我的employeee webapp,但是我不希望组装测试,因为这样会很麻烦,我只想在eclipse直接运行我的employee项目,就可以获得seciury项目的登录页面,进行登录,测试employee项目,请楼主指教,谢谢!
sorry,不太明白你的意思,不过,像你的spring-security这样的模块,应该作为一个jar,而不是webapp,这样多个webapp就可以共用它了。webapp中应该只包含UI相关的东西,这么做之后,你就不需要webapp之间的依赖了。
当然,webapp之间的依赖也是可以实现的,使用maven-war-plugin即可,但是,那应该是没有选择的选择。
楼主辛苦了,Maven所谓的多模块配置我一直搞的云里雾里,望楼主以后的文章里能着重介绍下,这两天我用Nexus搭建了一个仓库私服,你可以闲暇时看看,顺便指导下我,看还有哪儿不合适,地址为:http://repo.duduwolf.com,如果没问题,我希望先把这个私服发布出去,供广大网友使用。
都登陆不进去 啥都看不出来
我访问了你暴露的nexus,又不能登陆,看不出问题。谢谢你的无私,呵呵。
最近有些忙
有时间一定要看看
发表评论
-
我的书《Maven实战》
2010-11-12 13:09 69942我本来已经决定停止更新该博客了,但是为了推广下我的新书《Mav ... -
m2eclipse 0.10.0发布
2010-02-22 17:34 7957本文译自 http://www.sonatyp ... -
按需构建多模块,玩转Maven反应堆
2010-01-07 19:57 29461在多模块Maven项目中,反应堆(Reactor)是一个包含了 ... -
Maven仓库的布局
2009-12-14 08:54 11849注:本文节选自我正在 ... -
Maven3初窥
2009-11-10 16:28 20656Maven3的开发已经完成大半,本周末将发布alpha-3(T ... -
Nexus 1.4.0 发布
2009-10-29 17:22 6127新完成的用户故事: [ NEXUS-463] - ... -
archtype:generate出错?
2009-10-12 00:10 8091我们常常会使用mvn archet ... -
你最常用的构建和发布管理工具是什么?
2009-09-13 15:03 12919最近Eclipse社区进行了一项调查,关注社区如何使用Ecli ... -
策划编写《Maven实战》——初步目录
2009-09-09 03:42 81472010-08-27更新 关注 ... -
Maven最佳实践:持续集成
2009-08-21 17:14 0test -
Maven最佳实践:集成web容器
2009-08-21 17:13 0test -
《Maven权威指南》完整发布,带官方PDF
2009-07-06 00:45 673912010/04/29更新 :我已 ... -
Nexus Indexer 2.0:增量下载
2009-05-14 16:33 10213原文:http://www.sonatype.com/peop ... -
Maven最佳实践:版本管理
2009-04-29 00:04 124623什么是版本管理 首先,这里说的版本管理(version ma ... -
Maven最佳实践:Maven仓库
2009-04-01 17:42 110762什么是Maven仓库 在不用M ... -
Maven中央仓库的中国镜像
2009-03-31 22:53 45883(2011-01-27更新,由于私人原因,该镜像已关闭,在此致 ... -
Nexus入门指南(图文)
2009-03-15 23:07 147420Nexus介绍 Nexus 是Maven仓 ... -
“第十七章 编写插件” 发布
2009-03-09 17:16 3860又是漫长的一章内容,但如同本书的任何一章一样,由于原作者都是M ... -
Maven最佳实践:管理依赖
2009-02-23 16:50 28255"If I have seen further it ... -
m2e:为Eclipse引入Maven(下)
2009-02-04 16:19 30290译自:http://www.sonatype.co ...
相关推荐
Modbus协议数据采集java实现源码工程,以及相关jar包。可以在此基础上进行二次开发,无编译错误;现实项目中使用。
该插件没有将 maven 插件集成到复杂的 eclipse 增量构建系统中,而是利用 maven eclipse mojo(具有标准的 eclipse:eclipse 目标)来简单地从 pom 文件构建一个 eclipse 项目,然后忘记 maven 直到下一次pom 变化。...
仅Maven项目模型(pom.xml) 这些git储存库中的所有内容。 在现实世界中,您肯定会为此星座使用单独的git存储库。 如: framework.git interfaces.git application1.git application2.git 应用程序之间的循环依赖性...
轮训学生比赛 一个基于Maven的Java项目,旨在根据参加锦标赛的... 该项目的灵感来自现实生活中的板球足球锦标赛。 每个团队的积分也保持不变,也有可能找到比赛的获胜者。 还为项目的每个Java类编写了JUnit测试用例。
如果项目的实体表比较多,手工配置是不现实的。这个工具可以帮助自动后成model,dao,mapper.xml 使开发者从繁琐的mapper.xml映射中解放出来,把更多的精力投入到项目的业务层中去。首先配置好generatorConfig_...
2.多模块Maven项目 在现实世界中,单个应用程序或微服务将倾向于具有多个maven模块。 显然,我们需要有效地运行单元测试,集成测试并获得总体代码覆盖率的技术。 此示例服务尝试实现相同的目的。 3.使用HTTP / 2和...
l系统功能 该系统有三类用户:管理员、企业和学校。每类用户的功能因权限不同而各有区别。 ① 管理员功能模块 管理员可以对企业与学校的信息进行管理,上传企业和学校的信息、学校和企业发布...Maven包:Maven3.3.9+
Activiti 是一种企业版的工作流引擎,致力于把现实生活中的工作环节与业务表单单独抽象出来,实现通用的流程设置.该压缩包Activiti5最新的源码,使用maven构建
基于springboot2.2.6稳定版开发的旅游网站,开发工具为idea2019,数据库使用的mysql5.7,数据库连接池菜哦采用druid,数据库框架...非常适合大学生或者从业初学者学习借鉴,项目中进行了跨域配置,支持前后端分离部署。
对于本点餐平台网站的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据点餐平台网站的现状来进行开发的,具体根据现实的需求来实现点餐平台网站网络化的管理...
系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据视频点播系统的现状来进行开发的,具体根据现实的需求来实现视频点播系统网络化的管理,各类信息有序地进行存储,进入...
系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据视频点播系统的现状来进行开发的,具体根据现实的需求来实现视频点播系统网络化的管理,各类信息有序地进行存储,进入...
java2-examples 示例代码展示了“现实生活”中讲座的内容如何使用这个专案克隆它,将其作为Maven项目导入IntelliJ(通过 ),然后玩得开心:) 有关特定主题的更多信息,请参考模块的README.md文件。
jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个...
在项目中演示。 挑战 您获得了 -microservice,您希望使用 ( )运行它。 您想要使用构建工具和测试框架进行集成测试(您的应用程序在Docker中运行)。 您正在使用 。 此测试应能够同时并行构建(在不同的git分支上...
百度地图毕业设计源码 分布式秒杀系统 交流群:529135840 开发环境 JDK1.7、Maven、Mysql、Eclipse、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、curator-2.10.0 ...现实中经常被大
本系统在设计上是基于JavaWeb技术,综合使用SSM框架来进行设计,并使用maven对本项目中依赖包进行管理,在数据库方面采用MySQL关系型数据库并使用Redis数据库做常用数据的缓存处理。管理系统页面使用Vue2.x进行搭建...
本系统在设计上是基于JavaWeb技术,综合使用SSM框架来进行设计,并使用maven对本项目中依赖包进行管理,在数据库方面采用MySQL关系型数据库并使用Redis数据库做常用数据的缓存处理。管理系统页面使用Vue2.x进行搭建...