分享一个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 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...
随机推荐
- Android-DataBinding入门1
1.需要开启DataBinding功能: 在build.gradle配置: android{ dataBinding{ enabled = true } } 2.布局 布局中,根节点要以layout开 ...
- maridb\mysql 源码安装,以10.1.26版本为例
mysql 源码安装(mariadb 10.1.26) 1.环境部署 1 安装cmake 源码安装三部曲或者yum install cmake2安装依赖包yum install -y ncurses- ...
- Float精度丢失
BigDecimal _0_1 = new BigDecimal(0.1); BigDecimal x = _0_1; for(int i = 1; i <= 10; i ++) { Syste ...
- Spring Data 整合 ElasticSearch搜索服务器
一.基于 maven 导入坐标(pom.xml文件) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
- 深入理解php内核 编写扩展_III- 资源
原文:http://devzone.zend.com/article/1024-Extension-Writing-Part-III-Resources 编写扩展_III- 资源 介绍 资源 初始化资 ...
- Akka(42): Http:身份验证 - authentication, autorization and use of raw headers
当我们把Akka-http作为数据库数据交换工具时,数据是以Source[ROW,_]形式存放在Entity里的.很多时候除数据之外我们可能需要进行一些附加的信息传递如对数据的具体处理方式等.我们可以 ...
- 自动类型安全的.NET标准REST库refit
在SCOTT HANSELMAN 博客上看到一个好东西<Exploring refit, an automatic type-safe REST library for .NET Standar ...
- L贪心基础
<span style="color:#330099;">/* L - 贪心 基础 Time Limit:1000MS Memory Limit:65536KB 64b ...
- hdu5304 Eastest Magical Day Seep Group's Summer 状压dp+生成树
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5304 16个点的无向图,问能生成多少个n条边的连通图.(即多一条边的树) 先n^3 * 2^n 枚举全部的 ...
- 漂亮CSS样式用户留言表单
基本样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...