Maven-高级

maven是一个项目管理工具

  • 依赖管理:maven对项目中的jar包的管理过程,真正的jar包放置在仓库中,项目中只需要放置jar包的坐标。
  • 一键构建:maven自身集成了Tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作。
仓库的种类:
  1. 本地仓库
  2. 远程仓库【私服】
  3. 中央仓库
仓库之间的关系:
  • 启动maven工程时,maven工程通过pom.xml文件中jar包的坐标去本地仓库找对应的jar包,默认情况下,如果本地仓库没有,maven就会去中央仓库下载对应jar包到本地仓库,在公司中,如果本地没有,则会先从私服中下载jar包,私服没有再去中央仓库,也可以本地上传。
maven常用的命令:
  • clean
  • complie
  • test
  • package
  • install
  • deploy
maven的声明周期:
  • 清理生命周期
  • 默认生命周期
  • 站点生命周期
maven工程导入jar包的冲突:
概念解释
直接依赖项目中直接导入的jar包,就是项目的直接依赖包
传递依赖项目中没有导入的jar包,是通过项目依赖的jar包传递到项目中的jar包叫传递依赖包

  • 问题 :导入A和B两个版本号不同,不同功能的jar包,这两个jar包共同依赖同一个jar包C,但是因为导入的A,Bjar包的版本不同,导致最终maven导入的jar包C的版本存在疑惑
  • 解决方式:
    • 优先声明原则:maven会根据pom.xml文件中的上下顺序,只导入最上面的A或B依赖的那个版本的jar包
    • 路径近者优先原则:直接依赖路径比传递依赖路径近,那么最终进入的jar包会是路径近的直接依赖
    • 直接排除法:通过在jar包坐标下面配置exclusion标签的方式,声明该jar包的依赖包但不写依赖包版本号,此时,依赖包的版本和该jar包的版本一样,但不会在maven中显示(打破优先声明原则)
       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
maven工程锁定jar包:
  • 问题 :已知:两个项目属于父子依赖关系,依赖别的项目拿到的jar包,都属于传递依赖包。A项目被B项目依赖,那么A项目中的所有jar包会传递到B项目中,B项目的jar包对B来说是直接依赖,直接依赖的jar包会把A项目传递过来的jar包覆盖掉。
  • 解决方式:
    • 锁定jar包:通过dependencyManagement标签锁住A项目中的jar包的坐标,这样B项目或者其他项目中即使有同名的jar包,也无法覆盖。(提示:锁定jar包,只是锁定了jar包的版本,并不会根据锁定的jar坐标导入jar包,所以,还需要手动将dependencyManagement里面的jar包坐标复制粘贴到新的dependencies中)
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    </dependencies>
 </dependencyManagement>
 
  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    </dependencies>
maven工程统一管理jar包:
  • 通过el表达式,对jar包的版本进行统一管理,当jar包的版本需要变更时,可以集中修改
    <!--统一管理jar包版本-->
    <properties>
            <spring.version>5.1.10</spring.version>
            <junit.version>4.12</junit.version>
    </properties>
    <!--锁定jar包版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
   <!--导入jar包-->
   <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值