分享一个Maven的架构,以及在Maven配置中的注意事项
Maven作为一个十分流行的项目管理工具,在我们的项目变得逐渐复杂的时候,可以有效的降低项目管理难度。
聚合工程就是当项目到达一定规模时,十分有效的管理子项目和模块的方法。
首先介绍一下,在大型项目中,maven管理的一种架构,如下图:

pom类型的工程一般只负责整体的控制,如果你对pom工程进行install,你会发现maven不会下载你定义的jar,只会下载插件。
在上面的架构中,使用一个parent来控制所有的版本。有人可能会有疑问,为什么不直接在一个jar工程里把项目的共有依赖和版本信息全部定义安装完,然后后面的工程中直接依赖这个jar包就行了?
举个例子,如果有4个工程 1,2工程要有A依赖,2,4工程要有B依赖。显然,A和B并不算是公共依赖,因为只有一部分工程需要,这时就不能放在公共jar包中。所有需要A依赖的工程都需要各自管理自己的A依赖,这时,就会出现版本不一致的问题。
解决方案就是,定义一个pom工程,只负责定义所有的版本,使用dependencyManagement管理,所有继承这个工程的项目在添加新的依赖时,把版本声明到parent工程中,这样别人要用这个依赖时,就直接用已定义的版本,防止版本不一致的问题。
下面介绍一下使用maven搭建项目时却遇到了一些常见问题:
问题一/当修改pom文件后,项目上会一直有一个红叉
解决方法:项目右键-maven-updateProject
问题二/一直显示某一个jar包找不到,或者在程序运行时ClassNoFound
解决方法:打开Problems视图(Windows-showView),对于找不到的jar包,这个视图会显示具体是哪个jar包,进入到对应的文件夹,删除对应jar包的文件夹,然后从新下载。这种问题一般是jar包下载错误。
问题三/install项目时报错,提示JRE JDK搞混之类信息
解决方法:项目右键-Build Path-Configure Build Path 把JRE System Library删除,然后点击右边Add Library-Add System Library-Alternate JRE-Add-Standard VM-选择你的jdk目录,然后一直Apply,最后再Install
问题四/当依赖一个项目时,发现这个项目所依赖的jar没有一起传递
解决方法:注意我们定义被依赖项目的jar包的scope,当scope是test的时候,这个jar是无法传递的
分享一个Maven的架构,以及在Maven配置中的注意事项的更多相关文章
- 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路
最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...
- Maven学习第1期---Maven简单介绍
前言 Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程.Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境 ...
- 001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
一.整体概述 1.1.共性问题 技术瓶颈.不成体系.不能实际使用.不能落地.无法入门 1.2.目标-软件架构 专注于构建:高可扩展.高性能.大数据量.高并发.分布式的系统架构. 各项技术.组合构建分布 ...
- IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git
因为工作须要,这几天開始弃用eclipse,换idea.用了几天,idea确实有些地方比較方便.可是麻烦也是不少.并且网上相应的资料并没有eclipse那么多,非常多都是自己琢磨解决的,所以想弄个帖子 ...
- jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第三话):创建一个自由风格的项目(非maven),实现自动打war包
上一节把git和ant安装在虚拟机,并在jenkins上做了相关配置,接下来就可以真正开始构建一个项目了 1.新建一个自由风格的项目,因为是用ant打包,所以不要选择构建maven项目 2.配置源码管 ...
- 分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)
项目源码下载: WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企 ...
- IDEA Maven 三层架构 2、运行 springMVC
运行 SpringMVC 首先要理解 SpringMVC 应用程序的入口是配置文件 web.xml,其路径为"src/main/webapp/WEB-INF/web.xml",通过 ...
- 学习笔记——Maven实战(十)Maven 3,是时候升级了
去年10月份Apache Maven发布了3.0正式版,而在上个月的22号,Eclipse基金会宣布了Eclipse 3.7(Indigo)的发布,该版本Eclipse最大的新特性之一就是集成了Mav ...
- Maven 工程下 Spring MVC 站点配置 (一)
最近,查找一些具体资料时,虽然会有很多,但是系统的却很少,尤其是对maven 下 spring mvc 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...
随机推荐
- Less 原理
Less 原理 Less 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件. Less 并没有裁剪 CSS 原有的特性,更不 ...
- Java项目之员工收录系统
在Java SE中,对IO流与集合的操作在应用中比较重要.接下来,我以一个小型项目的形式,演示IO流.集合等知识点在实践中的运用. 该项目名称为"员工收录系统",在Eclipse的 ...
- 基于iframe的移动端嵌套
需求描述 上上周接到了新的项目,移动端需要做一个底部有五个导航,点击不同的导航页面主体显示不同的页面,其中两个页面是自己做,而另外三个页面是引用另外三个网址,其中两个网址为内部项目,另外一个为外部(涉 ...
- leetcode#42 Trapping rain water的五种解法详解
leetcode#42 Trapping rain water 这道题十分有意思,可以用很多方法做出来,每种方法的思想都值得让人细细体会. 42. Trapping Rain WaterGiven n ...
- Nginx实现https网站配置
咱们下面以google代理实现的方式来实现https.注意这里的https与google的https无关. 代码如下.有备注/usr/local/nginx/config/vhost/hk.cn331 ...
- C#判断ListBox是否显示了水平滚动条/横向滚动条
参看: Windows消息定义网址:http://wenku.baidu.com/link?url=9fesYjbLSDx9_TsLgSZSVoR7ELal-60x2p-lua_iPR44Xfekz0 ...
- 05.haproxy+mysql负载均衡 整合 redis集群+ssm
本篇重点讲解haproxy+mysql负载均衡,搭建完成后与之前搭建的redis+ssm进行整合 (注:这里用到了两台mysql数据库,分别安装两台虚拟机上,已经成功实现主主复制,如果有需要,请查看我 ...
- svn服务器的搭建与使用二
转载出处 上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用. 首 ...
- Winform开发中如何将数据库字段绑定到ComboBox控件
最近开始自己动手写一个财务分析软件,由于自己也是刚学.Net不久,所以自己写的的时候遇到了很多问题,希望通过博客把一些印象深刻的问题记录下来. Winform开发中如何将数据库字段绑定到ComboBo ...
- Docker 运行Tensorboard 和 jupyter的正确方法
Docker 运行Tensorboard 和 jupyter的正确方法 网上找了很多方法都是jupyter 运行正常但不知道如何打开Tensorboard.折腾了很久,实验很多中方法最终找到了一个正确 ...