`
拓子轩
  • 浏览: 204833 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MAVEN的POM配置文件

    博客分类:
  • java
阅读更多

一、pom文件基础配置

 

1. modelVersion:描述这个POM文件是遵从哪个版本的项目描述符

    <modelVersion>4.0.0</modelVersion>

 

2. groupId: 织标识

    <groupId>com.tuozixuan.frameworkx</groupId>

 

3. artifactId: 项目名称

    <artifactId>frameworkx</artifactId>

 

4. version: 版本号

    <version>0.0.1-SNAPSHOT</version>

 

5. packaging: 打包的格式,如jar , war

     <packaging>jar</packaging>

 

6. dependencies: 依赖关系列表,包含一个或多个dependency元素

 

7. dependency: 依赖关系配置

 

示例:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.tuozixuan.frameworkx</groupId>
  <artifactId>frameworkx</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

 

二、坐标

 

1. groupId

    定义当前maven项目隶属的实际项目。

    groupId的表示方式与java包名的表示方式类似,通常与域名的反向一一对应。

 

2. artifactId

    定义实际项目中的一个maven项目(模块),推荐使用实际项目名称作为artifactId的前缀,如spring-core。

 

3. version

    定义maven项目当前所处的版本。

 

4. packaging

    定义maven项目的打包方式,打包方式通常与所生成的构件的文件扩展名相对应,如jar、war。

 

5. classifier

    用来帮助定义构建输出的一些附属构件,如framework-javadoc.jar、framework-sources.jar。

    不能直接定义项目的classifier,附属构件不是项目直接默认生成,而是由附加插件帮助生成的。

 

总结:

    项目构件的文件名与坐标相对应,一般规则为:artifactId-version [-classifier] .packaging,[-classifier] 表示可选。

    groupId、artifactId、version是必须定义的,packaging是可选的(默认为jar),而classifier是不能直接定义的。

 

示例:

    <groupId>com.tuozixuan.frameworkx</groupId>  

    <artifactId>frameworkx</artifactId>  

    <version>0.0.1-SNAPSHOT</version>  

    <packaging>jar</packaging>  

 

三、依赖

 

1. 依赖的配置

根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个项目依赖。

每个依赖可以包含如下元素:

groupId、artifactId、version:依赖的基本坐标。

type:依赖的类型,对应项目坐标定义的packaging。一般不必声明,默认为jar。

scope:依赖的范围。

optional:标记依赖是否可选。

exclusions:用来排除传递性依赖。

 

2. 依赖范围

依赖范围是用来控制依赖与三种classpath(编译classpath、测试classpath、运行classpath)的关系。

compile:编译依赖范围。如果未指定则默认使用该依赖范围,对编译、测试、运行三种classpath都有效。

test:测试依赖范围。只对测试classpath有效,在编译测试代码及运行测试的时候才需要,如JUnit。

provided:已提供依赖范围。对编译和测试的classpath有效,但在运行时无效,如servlet-api。

runtime:运行时依赖范围。对测试和运行classpath有效,但在编译主代码时无效,如JDBC驱动。

system:系统依赖范围。和provided依赖范围完全一致,但是需要通过systemPath元素显式指定依赖文件的路径。

import:导入依赖范围。不会对三种classpath产生实际影响。

 

3. 依赖调解

如果传递依赖在两条依赖路径上有两个版本的X,则根据依赖调解的原则选择其中一个。

第一原则:路径最近者优先。

第二原则:第一声明者优先。

 

四、仓库

 

1. 仓库介绍

在Maven世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件。

maven可以在某个位置统一存储所有maven项目共享的构件,这个统一的位置就是仓库。

项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其他项目使用。

 

2. 仓库的布局

任何一个构件都有唯一的坐标,根据这个坐标可以定义其在仓库的唯一存储路径。

该路径与坐标大致对应关系为:groupId/artifactId/version/artifactId-version.packaging

 

3. 仓库分类

仓库分为两类:本地仓库和远程仓库。远程仓库又可分为:中央仓库、私服、其他公共库。

maven根据坐标寻找构件的时候,它会先查看本地仓库,如果本地仓库存在此构件,则直接使用;

如果本地仓库不存在此构件,或者需要查看是否有更新的此构件版本,就去远程仓库中查找,并下载到本地使用。

 

3.1 本地仓库

默认本地仓库目录为:C:\Users\用户名\.m2\repository\或/home/用户名/.m2/repository/

可以通过编辑.m2/settings.xml来设置本地仓库地址,如:

<settings>

  <localRepository>F:\repository</localRepository>

</settings>

 

3.2 中央仓库

中央仓库是默认的远程仓库,可以通过查看$M2_HOME/lib/maven-model-builder-3.0.4.jar中的pom文件:

  <repositories>

    <repository>

      <id>central</id>

      <name>Central Repository</name>

      <url>http://repo.maven.apache.org/maven2</url>

      <layout>default</layout>

      <snapshots>

        <enabled>false</enabled>

      </snapshots>

    </repository>

  </repositories>

 

3.3 私服

私服是架设在局域网内的特殊远程仓库,私服代理广域网上的远程仓库,供局域网内的maven用户使用。

当maven需要下载构件时,先从私服请求,如不存在,则从外部远程仓库下载并缓存到私服之后,再为maven用户提供下载服务。

另外,一些无法从外部仓库下载到的构件也能从本地上传到私服上供大家使用。

 

搭建私服的好处:节省自己的外网带宽、加速maven构件、部署第三方构件、降低中央仓库的负荷。

分享到:
评论

相关推荐

    maven pom配置文件

    这个一个maven web项目的pom文件。主要包含运用spring mvc, spring, mybatis 框架时需要导入的依赖列表。旨在帮助一些愿在java web上进行开发的新手。大部分依赖都有其注释与说明。

    maven配置文件pom

    pom.xml配置文件,包含数据库,仓库地址配置等等

    Maven的pom.xml配置文件详细配置说明

    Maven的pom.xml配置文件详细配置说明 &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...

    maven pom文件

    maven pom配置文件 说明

    maven项目的配置POM配置文件

    maven项目的配置POM配置文件,主要是maven项目的配置,直接从中央仓库下载内容。

    史上最全的maven的pom.xml文件详解

    记录一下自己常用的maven工程的pom.xml配置详解,各个标签详解

    maven的本地仓库配置文件settings.xml和项目中文件pom.xml.zip

    一、Idea关联的maven本地仓库配置文件settings.xml (1)必须使用默认文件名 D:\developsoft\javaweb\commonPlugins\maven\apache-maven-3.8.1_first\conf\settings.xml 二、Myeclipse关联的maven本地仓库配置文件...

    maven pom.xml 动态读取变量值插件

    该jar包功能,可以在一个properties文件里面定义jdbc.url=${url},在另一个properties文件定义具体的值,通过该jar可以获取到哪个具体的值。下载之后,自行安装到本地...具体pom.xml配置使用可以参考网络其他博文,谢谢

    maven的pom配置文件

    pom的详细信息,让你更加了解pox配置文件每个属性的作用

    SSM框架整合jar包和maven pom.xml配置文件整合

    SSM框架整合jar包和maven pom.xml配置文件整合

    maven_pom配置文件.txt

    maven_pom配置文件,多种依赖关系的配置。 加入servlet和jsp的依赖 ,引入pinyin4J的依赖 ,引入json-lib的依赖,引入MySQL数据库驱动依赖 ...

    Maven pom 配置详解

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

    Maven build之pom.xml文件中的Build配置

    本文主要阐述了maven build是用来干什么的,以及对build标签中各子元素配置的作用

    maven配置文件pom.xml

    maven配置文件pom.xml

    springmvc+maven+ibatis+jetty的pom配置文件

    springmvc+maven+ibatis+jetty的pom配置文件,平时书写太麻烦

    maven-pom配置文件

    maven-pom的配置文件水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水

    maven Pom详解.pdf

    maven pom 详解 maven2 比起maven1 来说,需要配置的文件少多了,主要集中在pom.xml和settings.xml中

    dubbo与spring集成maven pom文件

    dubbo与spring4集成maven pom文件 此pom为我生产项目中的配置,开始想省事使用spring boot,结果与springmvc不兼容,导致tomcat启动失败,后来找了maven shade来打包,解决了xsd兼容问题 另外注意,dubbo阿里的分支...

    maven配置文件

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    maven项目的pom文件

    这是maven管理的动态web项目的pom.xml配置文件,里面有ssm框架需要用到的jar包依赖

Global site tag (gtag.js) - Google Analytics