maven入门:依赖 聚合 继承(一)

目录

maven的安装不在这里讲了,网上教程一大堆。

需要注意的:

(1).安装完maven后建议更改本地仓库的位置,在conf->setting.xml中修改

<localRepository></localRepository>

(2).maven的默认远程仓库位置在lib目录下的maven-model-builder.jar的pom-4.0.0.xml中的

<repositories>
    <repository>
        <url>http://repo.maven.apacho.org/maven2</url>
    </repository>
</repositories>

6月22日补充:这篇博客没有写如何具体创建maven父子工程,其实我本人也到网上看过很多创建父子工程的博客,大同小异但是有些许不同,观察比较细的同学会发现有些文章比如idea是先创建空项目还是先创建maven工程但是不选择骨架。比如eclipse子项目是创建maven project还是必须创建maven module。重点不在于你用哪种方式创建,重点是创建出来的项目要符合maven规范,如父项目package值为POM(哪怕你创建时候选错了都可以自行到pom.xml中手动改,甚至你可以手动创建项目的目录结构,目录结构你足够熟悉就好。)

1.maven常用命令:

  • 打包:mvn package (打包后放入target中)
  • 编译:mvn compile(会生成target目录,并把编译后的class放在classes中)
  • 清空:mvn clean (清空target)
  • 测试:mvn test (测试报告生成后存在target中,一般是三个文件)
  • 安装: mvn install (将项目安装到本地仓库中)
  • 发布: mvn deploy (发不到私服)

2.maven依赖

(1).依赖是具有传递性的.
(2).依赖传递原则:层级相同时按引入顺序传递,层级不同时按层级最短的传递
举个栗子:
A->B->C->X(1.0)
A->D->X(2.0)
由于只能引入一个版本的包,此时Maven按照最短路径选择导入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路径长度一致,则优先选择第一个,此时导入x(1.0)

还有resources也是可以传递的,当然resources中的文件不涉及层级问题,所以resources是按照dependency顺序引入的。当然如果本项目中能匹配到的话优先选择本项目中的。

(3).scope标签的值会影响依赖,这里暂时先不展开了.
(4).排除依赖可以用

<exclusions>
     <exclusion>
           <groupId>commons-logging</groupId>
           <artifactId>commons-logging</artifactId>
      </exclusion>
</exclusions>

3.聚合

建立一个简单项目artifactId为user-parent
这里写图片描述

  <modules>
      <module>../user-service</module>
      <module>../user-core</module>
      <module>../user-log</module>
  </modules>

实现对三个项目的聚合,module标签中是其他项目的路径.这样所有项目都在通过操作父项目操作来实现了.
注意:modules的顺序是不重要的,因为maven会自动根据依赖关系来拓扑排序.

4.继承

子项目中添加:

  <parent>
      <groupId>cn.milo.user</groupId>
      <artifactId>user-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <!-- 这里是要指到pom文件的 -->
      <relativePath>../user-parent/pom.xml</relativePath> 
  </parent>

6月22日补充:这里讲一下relativePath标签,如果不写这个标签,子项目会默认在子项目pom.xml的父目录中查找pom.xml,没有找到的话会依次到本地仓库,远程仓库中找对应的父项目并找到对应的pom.xml.所以协同开发的话父项目要先deploy到私有仓库.私有仓库用法参照 : maven入门:nexus安装与使用(二)

父项目中添加依赖管理:

 <!-- 依赖管理 -->
  <dependencyManagement>
      <dependencies>
          <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
      </dependencies>
  </dependencyManagement>
  父项目中添加依赖管理:

如上配置后子项目添加父项目中的jar包就不需要写version标签了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值