资讯专栏INFORMATION COLUMN

Maven 模块化项目管理

ethernet / 1139人阅读

摘要:一什么是是一款软件项目管理和理解工具。基于项目对象模型的概念,通过添加一小段描述来管理项目的构建。另外如果子模块中指定了版本号,那么会使用子模块中指定的版本。

一、什么是Maven?

Maven是一款软件项目管理和理解工具。基于项目对象模型(POM)的概念,通过添加一小段描述来管理项目的构建。

二、为什么要使用Maven?

以前在用Java开发一个项目时,往往需要引入几十或者上百个Jar包,那么这些Jar可能分散在不同的地址,我们需要一个一个去下载,然后在导入到我们项目中!有时一个Jar包找到合适的版本可能需要几个小时。更让人痛苦的是一个大项目开发需要多人协同开发。那么项目依赖的Jar包就需要有一份公共的来解决不同人引入相同的Jar不同版本的依赖从而导致冲突。

现在使用Maven来构建,Maven通过一个POM文件来管理项目依赖,只要在POM中加入想要的Jar包依赖,Maven会在本地仓库中查找依赖包。如果本地没有找到就会从配置的私服中下载依赖,没有配置私服Maven就会从Maven的中央仓库(99%的开源项目都可以在Maven中央仓库中找到)中去找到指定版本的Jar包。

三、约定规范

web : 项目名称

src : 源代码和测试代码的根目录

main : 应用代码目录

java : 源代码目录

resources : 配置文件目录

test : 测试代码目录

testResources : 测试使用的配置文件

webapp : 当你的项目是一个web项目时才会需要这个文件夹,里面都是存放项目静态文件。如果你的项目是jar项目那就不需要这个目录了。

target : 项目打包时maven自动帮我们创建的目录,里面就是打包好的项目文件

pom.xml : 这就是配置项目依赖的地方。一次配置,不管以后代码给谁,都可以运行起来。

四、实例




  4.0.0

  com.test
  maven-test
  1.0-SNAPSHOT
  war

  maven-test Maven Webapp
  
  http://www.example.com

  
    UTF-8
    1.7
    1.7
    /**
    * POM文件中使用的变量声明
    * 可以在这里声明各种文件的版本号
    * 例如 : 4.3.9.RELEASE
    * 在下面的依赖引入时可以声明一个公共版本
    */
    4.3.9.RELEASE
  

  
    /**
    * 一个 dependency 为一个依赖
    * groupId : 项目组织唯一的标识符,对应JAVA的包的结构,在main目录里面java的目录结构 (groupId可以多个项目使用一个)
    * artifactId : 项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(每个项目中同样的版本只能有一个)
    */

  
    org.springframework
    spring-core
    ${spring.version}
  
  
    org.springframework
    spring-context
    ${spring.version}
  
  
    org.springframework
    spring-beans
    ${spring.version}
  
  
  

  
    maven-test
    
      
        /**
        * 这边是maven插件配置
        * 需要打包jar时,就需要配置mainClass
        * 多模块时,需要配置子模块文件引入插件
        */
        
          maven-clean-plugin
          3.0.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.7.0
        
        
          maven-surefire-plugin
          2.20.1
        
        
          maven-war-plugin
          3.2.0
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
      
    
  

五、模块化项目管理

Maven模块化项目管理,适用于一些比较大的项目,通过功能的模块拆分,实现代码的解耦合,便于代码的复用和维护及管理。开源框架在便于阅读源码前提下基本都是采用模块化的方式,提供模块集成,用户可以根据需求配置指定的模块。

父模块配置:

子模块配置:

父模块配置dependencies与dependencyManagement的区别 :

dependencies : 在子模块中不写该依赖项,那么子模块仍然会从父模块中继承该依赖项(全部继承,上面使用的截图就是dependencies)

dependencyManagement : 父模块里只是声明依赖(在dependencies外层在包一个dependencyManagement标签说明),并不实现引入,因此子模块需要显示的声明需要用的依赖。如果不在子模块中声明依赖,是不会从父模块中继承下来的;只有在子模块中写了该依赖项,并且没有指定具体版本,才会从父模块中继承该项,并且version和scope都读取自父pom。另外如果子模块中指定了版本号,那么会使用子模块中指定的Jar版本。

部分信息参考来自网络.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71204.html

相关文章

  • Maven核心概念和日常实践

    摘要:项目根目录项目名项目版本号项目目录打包的名字二依赖管理概述通过在配置依赖坐标,会自动帮我们下载依赖的构件。关于父模块的依赖配置注意两点一般都是通过来配置所有依赖及其版本号,然后子模块,在自己的文件中声明依赖即可,不用再指定版本,以确保统一。 一、Maven 1.1 为什么写Maven 工欲善其事,必先利其器。如今Java相关开发,基本离不开Maven、Gradle、MAT、Hudson...

    894974231 评论0 收藏0
  • Maven学习笔记

    摘要:学习笔记先生,您在写代码吗不,我们正在完成一项伟大的工程。于是打算重新学习一下。中央仓库镜像为了分担中央仓库的流量,提升用户的访问速度。生成项目报告,站点,发布站点。修改源码后也需要逐个手动进行操作。 maven学习笔记 先生,您在写代码吗? 不,我们正在完成一项伟大的工程。 前言 在刚学maven时,我就把maven当作一个引入jar包的工具而已,以前是自己下载jar包,现在是只用...

    tomlingtm 评论0 收藏0
  • Maven 实战

    摘要:的主要思想是约定优于配置。强烈建议遵循以上规范,避免不必要的麻烦。依赖传递依赖范围除了控制,还会对依赖传递产生影响。此外还提供了和来进一步管理依赖,分别称为可选依赖和排除依赖。 showImg(https://segmentfault.com/img/remote/1460000012363876?w=1240&h=698); Maven 是跨平台的项目管理工具,主要服务于基于Java...

    twohappy 评论0 收藏0
  • Maven模块项目搭建+整合SSM框架

    摘要:继承作用就是避免配置重复,对于子项目来说应该关心父项目是怎么样配置的。聚合字面理解就是聚在一起合作完成工作,就是将子模块聚集起来完成相应的项目需求父工程的搭建项目结构在父工程中,主要负责完成依赖的版本管理,并不是实际的依赖。 从大二开始就一直关注segmentFault,在问题专区帮忙回答一些自己知晓的问题;在写这篇文章之前我一直会在朋友圈发一些自己遇到的问题以及解决办法,这是第一次写...

    liaosilzu2007 评论0 收藏0
  • IntelliJ Idea 创建maven模块项目

    摘要:创建项目点击创建项目,点击下一步填写组名项目项目版本填写本地项目和目录名称,点击创建好的项目目录结构如下一般多模块开发中父模块都是不带目录的,手动删除目录,删除之后的目录如下至此父模块已经创建完成。 公司的项目使用idea进行maven的多模块开发,由于接触intellij Idea没有多长时间,对好多功能都不太清楚,就在网上浏览帖子学习,在此过程中总感觉帖子写的不够详细,在途中踩了很...

    ?xiaoxiao, 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<