maven的进阶简介

之前对maven只是简单的使用,并不是很了解。最近较为系统的了解了一下,在这里做一下笔记。
首先简单的介绍一下maven:maven简单的说就是项目管理工具,而对于新手来说,最大的帮助就是jar包不需要自己下载、导入,并且解决了jar包冲突的问题。在pom.xml的文件中配置一下就自动下载导入了。
maven可以去官网下载,IDEA中一般自带,下载的jar仓库一般在C:\Users\你的电脑系统名称.m2目录下。

  • maven工程类型包括:POM工程(逻辑工程:主要用来管理项目的,类似于一个父级工程)、JAR工程、WAR工程。在项目的pox.xml文件下的project下创建packaging节点,节点中填写工程类型。

  • pom:project object model,项目对象模型。

  • 项目之间的关系:在maven中每个项目相当于一个对象。因为项目最终可以导成jar的包。

  • 依赖和注入:A工程需要B工程的东西,则称为A依赖B或者B注入A,即导jar包。因此B可以是自己的项目,也可以是中央仓库的项目,并且依赖具有传递性。

  • 注入依赖(导入jar包):在pom文件中的project节点 -> dependencies节点 -> dependency节点 -> 开始写坐标(groupId、artifactId、version)就可以了。groupId:类似包名;artifactId:一般用项目名;version:版本,默认是1.0 快照版。

  • 注入依赖的两个原则,(下面的->读成依赖即可)
    –最短路径优先原则:如果A->B->C->D(2.0)并且A->E->D(1.0),那么A最终依赖的D的版本是1.0,因为后者到D的路径短。
    –最先声明原则:如果第一原则无效,A->B->D(2.0)并且A->E->D(1.0),这时最短路径原则无法判断,A最终依赖的D的版本是看B和E谁在pom中先声明。

  • 排除依赖:依赖一个工程的时候,我们可以排除里面的一些依赖。
    –例如A->B->C,同时B->D,我们可以在A->B时排除C。方法是在A依赖B的时候在dependency中添加exclusions节点 -> exclusion节点 -> 然后写所排除的依赖( C )的坐标的groupId、artifactId。

  • 依赖范围:什么时候依赖有效,默认情况下是在编译和执行阶段都有效。在version的同级节点下有一个scope节点,其值可以包含一下几种:
    –compile:默认范围。表示该依赖在编译和运行时都有效。
    –provided:在maven依赖的范围内有效。

    • 例如,tomcat自带servlet-api的jar,如果但是我们编译和测试的时候时没有的,如果我们打成war的时候,会出现冲突。可以使用这个属性。
    • 总结:编译和测试的时候需要该依赖,但是在项目运行时,由于容器已经提供,因此不需要的时候,可以用这个属性。

    – runtime:编译时不生效,运行时生效。例如,jdbc驱动,他只有在运行的时候才有用。
    – system:使用本机自己的包,不在本地仓库、镜像仓库、中央仓库等,而是在本地的一个位置。这时候还需要设置一个与scope同级的systemPath节点来放置路径。
    – test:只在编译测试和运行测试的时候有效。例如,JUnit等测试类的依赖。
    – import:用于POM工程,需要配合dependencyManagement节点。

    • POM工程:将d…M…节点放在dependencies节点外面,此时此项目尽量主要用来管理依赖。放在d…M…中就是进行管理的声明,这个POM项目并不会真正的导入依赖。例如,管理本版号。可以将一些内容进行动态。在project节点下创建properties节点,properties节点再往下的节点名随便创建表示变量名。引用的时候通过${变量名}的方式进行引用。
    • 子工程:子工程继承POM工程,在project节点下创建parent节点,在parent节点下添加父工程(POM工程)坐标(包括:groupId、artifactId、version)。并且需要在创建一个relativePath节点,在里面添加父工程的pom.xml文件的路径,一般路径是”…/父工程项目名/pom.xml“。然后在dependencies节点下的dependency节点下写groupId、artifactId即可。这时候使用的是父工程的依赖,版本不需要写,因为父工程有了。如果在子工程中再写,那版本就是子工程的。如果父工程中写了import,则子工程再重写版本号也是无效的。
  • 继承关系:就是上面的POM工程和子工程之间的关系。本质就是pom.xml文件的继承。

  • 聚合关系:首先创建pom项目,直接用pom表示本项目是pom工程,然后在pom工程名上new一个module,也就是创建下一个项目,这个项目其实继承上面的pom项目,多个module就是一个聚合关系。

  • 编译器插件:在project下面创建build节点,然后创建plugins节点存储多个插件,然后每一个插件用plugin包裹,然后放插件的坐标等。例如,修改jdk版本。

  • 资源拷贝插件:配置文件一般在src/main/resources下,打包之后就会放在target/classes下。

    • 如果不在resources下,则无法打包到classes中,这时候就需要资源拷贝插件。在project下面创建build节点,然后创建resources节点存储多个插件,每个插件用resource包裹。
  • tomcat插件:maven提供tomcat插件,所以无需与外部插件进行关联。放在编译器插件所在的位置即可。然后需要使用tomcatX:run运行tomcat,X表示版本。

  • maven常见命令:(在idea的terminal控制台执行命令,注意配置环境变量)

    • mvn install:本地安装,包含编译、打包、安装到本地仓库。类似于javac和jar命令。
    • mvn clean:清除已编译信息,删除工程的target目录。
    • mvn compile:只进行编译。类似于javac命令。
    • mvn package:打包,包含编译、打包两个功能。注意:install和package两个的区别有没有将jar包或者war包放到配置的本地仓库(私服仓库)中。本地仓库的配置需要在.m2文件下的settings.xml文件中配置。
    • mvn deploy:将打好的包放在本地仓库中。

以上就是maven的简介。至于怎么创建maven项目可以自行百度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值