分享一个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 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...
随机推荐
- 四、Hadoop学习笔记————各种工具用法
hive基本hql语法 Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库 ...
- 浅谈快速开发框架的分层(WinForm)
对于B/S都是MVC好不好 不多说了,反正大家都这么用 这里简单说下C/S 首先常用的几种: 模仿B/S的MVC 也有人称之为 MVP 还有MVVM这种真心觉得够够的了,当然也有其优势所在,这里不讨 ...
- LayoutInflater (转)
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- Android-DataBinding入门1
1.需要开启DataBinding功能: 在build.gradle配置: android{ dataBinding{ enabled = true } } 2.布局 布局中,根节点要以layout开 ...
- Shell编程基础篇
1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚 ...
- JavaScript内置的预定义函数
javascript引擎中有一组可供随时调用的内建函数.这些内建函数包括 parseInt() 将收到的任何输入值转换成整数类型输出,如果转换失败,返回NaN parseFloat() 功能基本与p ...
- php银联网页支付实现方法
本文实例讲述了php银联网页支付实现方法.分享给大家供大家参考.具体分析如下: 这里介绍的银联WAP支付功能,仅限消费功能. 1. PHP代码如下: 复制代码代码如下: <?phpna ...
- 构建Nginx均衡LAMP高性能服务器
LNAMP(Linux+Nginx+Apache+Mysql+PHP)架构受到很多IT企业的青睐,取代了原来认为很好的LNMP(Linux+Nginx+Mysql+PHP)架构,那我们说LNAMP到底 ...
- How to get table pg_stat_user_functions.
修改配置文件postgres.conf track_functions = all # none, pl, all 或者 在当前事物中设置 postgres=# s ...
- Taffy Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 2. 实现细节 页面使用Python Flask +Bootstrap开发,还 ...