分享一个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是无法传递的

 

posted @ 2018-01-02 19:55 宇的季节 阅读(...) 评论(...) 编辑 收藏