setting.xml/pom.xml

settings.xml

settings.xml是maven的全局配置文件
settings.xml文件一般存在于两个位置:
1.全局配置: {user.home}/.m2/settings.xml
用户配置优先级高于全局配置

顶级标签


   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

二级标签

profile标签

pom

pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

pom.xml

一级标签


















dependencies与dependencyManagement 的区别:
dependencyManagement仅仅是声明依赖并不会真正地注入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom,但是如果子项目中已经指定了version则不会向上寻找而直接使用该版本的jar。

二级标签

dependency

  
       junit  
       junit  
       4.11  
       test  
       jar  
       true  
       

groupId,artifactId,version,packaging定义了一个具体的依赖项
optional:设置指依赖是否可选,默认为false,即子项目默认都继承,为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似
exclusions:如果X需要A,A包含B依赖,那么X可以声明不要B依赖,只要在exclusions中声明exclusion
scope:用来指定当前包的依赖范围

  • compile(编译范围),是默认的范围,编译范围依赖在所有的classpath中可用,同时它们也会被打包。
  • provided(已提供范围),只有在当JDK或者一个容器已提供该依赖之后才使用。
  • runtime(运行时范围),在运行和测试系统的时候需要。
  • test(测试范围),在一般的 编译和运行时都不需要。
  • system(系统范围),与provided类似
    在dependencyManagement中的dependency可以使用scope=import来解决pom单继承问题,即可以将杂乱冗长的parent 分成多个model

pom关系

  • 依赖关系:就是一个dependency
  • 继承关系:子pom与父pom的关系,父pom用来进行统一的版本关系,注意此时packaging必须为pom
  • 聚合关系:
    总pom
  
      
    module-1  
    module-2  
    module-3  

子pom

  

    org.clf.parent   
    my-parent   
    2.0   
 

继承与聚合都属于父子关系, 不同的是对于聚合模块来说,它知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。对于继承关系的父 POM来说,它不知道有哪些子模块继承与它,但那些子模块都必须知道自己的父 POM是什么,在实际项目中,一个 POM往往既是聚合POM,又是父 POM,它继承了某个项目,本身包含几个子模块,同时肯定会存在普通的依赖关系,就是说,依赖、继承、聚合这三种关系是并存的

你可能感兴趣的:(setting.xml/pom.xml)