maven项目管理之-07-依赖传递

依赖范围
 
  开发过程中,项目工程需要引入第三方jar,比如jdbc相关的jar,我们需要将其引入到classpath,
  然后项目工程才能使用jar中的接口、类及方法等。
 
  maven提供三种classpath:
    1,编译 -> compile (默认的范围,表示依赖范围在编译、测试、运行都有效的时候有效)
    2,测试 -> test (表示依赖范围只存在测试的时候有效,如junit)
    3,运行 -> run (表示依赖范围只存在运行的时候有效)
    4,提供依赖 -> provided (在编译、测试时有效,最后运行时不会被加入, 如servlet-api.jar, 因为tomcat等服务容器包含相关api)
    5,运行环境 -> runtime (在测试和运行时有效)
    6,系统环境 -> system (与本机系统相关联,在编译、测试时有效, 可移植性差)
    7,导入 -> import (导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置)

    

依赖传递

   下面举例说明maven的依赖传递,分别创建三个maven工程A、B、C,其pom文件如下图

创建完成以后,发现C工程未直接引入A的坐标,但依赖目录里有A的相关依赖,由此说明依赖的传递性,如下图

对于日常的开发过程中,可能遇到C工程不想依赖A工程的jar(比如log4j的api,Struts和Spring都有相关的依赖),这就需要对依赖处理,比如排除依赖exclusions,做出稍微修改,效果如下:

---------------------------------------------------------------------------------------------------

注意:另发现工程中的jre版本与实际引入的jre版本不同,如下修改


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

对于eclipse中,每次新创建maven工程都出现上面的jre版本不一致的情况,可以修改maven配置文件里的设置,

E:\maven\apache-maven-3.3.3\conf\settings.xml, 打开找到profiles标签,加入如下代码即可


<profiles>
  <id>jdk-1.7</id>
  <!-- activation:这是profile中最重要的元素。跟pom.xml中的profile一样,
   settings.xml中的profile也可以在特定环境下改变一些值,而这些环境是通过activation元素来指定的。 -->
  <activation>
      <!-- activeByDefault:当其值为true的时候表示如果没有其他的profile处于激活状态的时候,
      该profile将自动被激活 -->
      <activeByDefault>true</activeByDefault>  
      <jdk>1.7</jdk>
  </activation>
  <!-- properties:用于定义属性键值对的。当该profile是激活状态的时候,
  properties下面指定的属性都可以在pom.xml中使用。 -->
  <properties>   
      <maven.compiler.source>1.7</maven.compiler.source>
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
  </properties>
</profiles>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值