Maven(5)-优化和重构POM】的更多相关文章

在一个复杂的项目中,项目的各个模块存在各种相互依赖关系.优化一个多模块项目的POM最好通过几步来做.总的来说,我们总是寻找一个POM中的重复或者多个兄弟POM中的重复.在多模块项目中依赖重复的模式主要包括①:一些依赖在多个模块中被生命:②有一些依赖关系是关联的,共享同样的版本③:兄弟模块依赖和兄弟模块版本的重复.Maven提供简单的机制能让你将所有的依赖重构到一个父POM.重复的依赖声明很难保证一个大项目中版本的一致性.我们可以找出所有被应用一次以上的依赖,然后将其向上移动到父POM的depen…
本文主要介绍如何优化pom,杜绝重复(DRY). 1)模块重复依赖: 2)坐标版本号重复: 3)兄弟依赖 一.项目骨架 上图说明: multi-module-project是一个有多个模块构成的项目,模块分别为:web-service.web-app.web-dal web-service.web-app.web-dal分别依赖与log4j web-app同时依赖web-service和web-dal,因为这三个模块属于同一个project,所以这种依赖叫做兄弟依赖.  二.模块重复依赖 2.1…
重构是广大开发者再熟悉不过的技术,在Martin Fowler的<重构——改善既有代码的设计>一书中,其定义为“重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本.”以及“重构(动词):使用一系列重构准则(手法),在不改变软件之可察行为前提下,调整其结构.”.重构能够改善软件设计,使代码更易读,更容易找出bug,并帮助你更快速地编码.较之于一般的代码来说,Maven的POM简单很多,不过随着项目的成长,模块的增多,POM的内容也会变多,这…
使用常量不仅让代码变得简洁,更重要的是可以避免重复,在需要更改的时候,只需要修改一处,降低了错误发生的概率. <project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycom.myapp</groupId> <artifactId>myapp-util</artifactId> <version>2.0.0-SNAPSHOT</version&…
赵海平在今年三月份来到阿里,听毕玄(他现任主管)说去年五六月份就跟赵海平聊上了.有人问:为啥 BAT 三大巨头,你看中了阿里巴巴?在今天现场达一千多人的分享中赵海平给出了回复:“因为百度和腾讯没找我呗~”,他笑道,“百度以搜索为核心,优化了很多年了,估计也没啥可以优化的了:而腾讯除了 QQ 和微信,也没什么大型应用(别跟人家说哦)”.这不是原话哈,赵海平还是相当谦虚并且能言的,思维很开阔,两个小时的分享内容丰富,时不时还插两个故事,起初进场的手机和电脑都很自觉的收起来了~旁边的同事侃道:“高 P…
问题:使用IDEA创建Maven工程时提示"...xxx/pom.xml already exists in VFS",怎么办? 解决:如果只是删除工程,还会有这样的提示.说到底,删除工程后,还要清理IDEA的缓存. 1.在IDEA中任意打开一个工程 2.在菜单中依次找到"File -----> Invalidate Caches / Restart" 3.在弹出的窗口中点击"Invalidate and Restart".问题解决.…
在eclipse中搭建maven project时,在不使用模板的情况下,搭建的web项目会报错. 操作步骤如下: 1.勾选Create a simple project ,因为如果不勾选系统会提供模板进行创建maven项目. 2.点击Next,进入如下页面: 3.点击Finish.创建的maven项目如下: 4.pom.xml出错!!!这是因为我们创建的是web项目,以往创建web项目时,在webapp目录下都会有WEB-INF/web.xml文件和WEB-INF/lib文件.所以我们只要在w…
内置属性(Maven预定义,用户可以直接使用) ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}同${basedir}; ${project.baseUri}表示项目文件地址; ${maven.build.timestamp}表示项目构件开始时间; ${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-…
转: maven的三种工程pom.jar.war的区别 2018年09月03日 10:02:53 houjx3 阅读数:2918更多 个人分类: maven   1.pom工程:用在父级工程或聚合工程中.用来做jar包的版本控制. 2.war工程:将会打包成war,发布在服务器上的工程.如网站或服务. 3.jar工程:将会打包成jar用作jar包使用. 补充一下,jdk9 后还可以打包 jmod(Java 模块化),厉害的是这个通过 jlink 命令,可以直接将 jmod 打包为对应环境的可执行…
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便. 为了解释原因,假设有这样一个项目,很常见的JavaWeb应用.在这个应用中,我们分了几层: Dao层负责数据库交互,封装了Hibernate交互的类. Service层处理业务逻辑,放一些Service接口和实现…