Maven的使用

2 篇文章 0 订阅

Maven的使用

settings.xml配置阿里镜像仓库

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name> 
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

pom.xml jar依赖添加结构

        <dependencies>
            <dependency></dependency>
        </dependencies>

例·:mysql依赖添加

 <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

模块依赖引入
模块依赖必须在<dependencyManagement></dependencyManagement>中进行
例:

父级模块

 <dependencyManagement>
           <dependencies>
               <!-- 将自己写的模块 放到 父级pom中,以供给别的块使用-->
               <dependency>
                   <groupId>com.qianfeng</groupId>
                   <artifactId>maven-demo1</artifactId>
                   <version>1.0-SNAPSHOT</version>
               </dependency>
               <dependency>
                   <groupId>com.qianfeng</groupId>
                   <artifactId>maven-demo2</artifactId>
                   <version>1.0-SNAPSHOT</version>
               </dependency>
           </dependencies>
       </dependencyManagement>

子模块引入其他模块

 <dependencies>
            <dependency>
                <groupId>com.qianfeng</groupId>
                <artifactId>maven-demo1</artifactId>
            </dependency>
        </dependencies>

依赖传递

依赖一个jar包往往会下载相互关联的jar包这就是依赖传递,可能会造成依赖冲突问题,轻则报错,重则会导致项目无法启动。

依赖传递例:

       <!--父级模块-->
       <dependencyManagement>
           <dependencies>
               <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
               <dependency>
                   <groupId>mysql</groupId>
                   <artifactId>mysql-connector-java</artifactId>
                   <version>5.1.49</version>
               </dependency>
               <!-- 将自己写的模块 放到 父级pom中,以供给别的块使用-->
               <dependency>
                   <groupId>com.qianfeng</groupId>
                   <artifactId>maven-demo1</artifactId>
                   <version>1.0-SNAPSHOT</version>
               </dependency>
               <dependency>
                   <groupId>com.qianfeng</groupId>
                   <artifactId>maven-demo2</artifactId>
                   <version>1.0-SNAPSHOT</version>
               </dependency>
           </dependencies>
       </dependencyManagement>
<!--子模块二将子模块一加入依赖-->
    <dependencies>
            <dependency>
                <groupId>com.qianfeng</groupId>
                <artifactId>maven-demo1</artifactId>
            </dependency>
        </dependencies>
   <dependencies>
   <!--子模块三将子模块一加入依赖-->
        <dependency>
            <groupId>com.qianfeng</groupId>
            <artifactId>maven-demo2</artifactId>
        </dependency>
    </dependencies>

依赖冲突问题解决

一是在在父级模块中统一依赖版本
二是将冲突的依赖通过<exclusion></exclusion>移除掉

  <!--依赖移除,移除的是依赖模块中的引入的依赖包(例:移除mysql)-->
   <dependencies>
            <dependency>
                <groupId>com.qianfeng</groupId>
                <artifactId>maven-demo1</artifactId>
                <exclusions>
                    <exclusion>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>

Meaven生命周期

标识周期
compile缺省值,适用于所有阶段(测试运行,编译,运行,打包)
provided打包的时候去到这个依赖,只存活在开发的测试编译环境中
runtime只在测试时使用,如mysql的驱动jar,适用于(运行,测试阶段)
test只在测试时使用,使用喻(编译、测试运行)阶段,如junit.jar
systemMaven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于 (编译,测试运行,运行阶段)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值