一、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 web项目的pom文件。主要包含运用spring mvc, spring, mybatis 框架时需要导入的依赖列表。旨在帮助一些愿在java web上进行开发的新手。大部分依赖都有其注释与说明。
pom.xml配置文件,包含数据库,仓库地址配置等等
Maven的pom.xml配置文件详细配置说明 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
Maven的pom.xml文件是项目对象模型(Project Object Model)的配置文件,包含了项目构建、依赖、插件等信息。Maven Pom Editor是Eclipse中的一个插件,用于编辑和验证pom.xml文件,提供代码提示、错误检查和自动...
maven的pom配置文件详解 Maven的pom.xml文件是Maven项目的核心配置文件,它规定了项目的依赖关系、编译环境、测试环境、打包方式等信息。在这个文件中,我们可以看到许多重要的配置项,它们决定了项目的构建、测试...
Maven是Java领域最流行的构建工具之一,其核心配置文件是Pom.xml。在Pom.xml文件中,我们可以定义项目的基本信息、依赖关系、构建过程、测试环境等。下面,我们将详细解析Pom.xml文件的各个标签和它们的作用。 1. ...
maven pom配置文件 说明
maven项目的配置POM配置文件,主要是maven项目的配置,直接从中央仓库下载内容。
资源文件通常包括配置文件、非Java源文件等,这些文件在构建过程中会被复制到指定目录。 4. <plugins>:这是配置特定插件的地方。每个元素内可以指定插件的坐标、执行的版本以及特定的配置参数。 此外,Maven还...
一、Idea关联的maven本地仓库配置文件settings.xml (1)必须使用默认文件名 D:\developsoft\javaweb\commonPlugins\maven\apache-maven-3.8.1_first\conf\settings.xml 二、Myeclipse关联的maven本地仓库配置文件...
**Maven POM配置详解** POM(Project Object Model)是Apache Maven的核心概念,它是一个项目对象模型,用于描述一个Maven项目的所有相关信息。POM是通过XML格式编写的,并且通常命名为`pom.xml`,位于项目根目录下...
该jar包功能,可以在一个properties文件里面定义jdbc.url=${url},在另一个properties文件定义具体的值,通过该jar可以获取到哪个具体的值。下载之后,自行安装到本地...具体pom.xml配置使用可以参考网络其他博文,谢谢
maven_pom配置文件,多种依赖关系的配置。 加入servlet和jsp的依赖 ,引入pinyin4J的依赖 ,引入json-lib的依赖,引入MySQL数据库驱动依赖 ...
Maven POM配置详解 Maven 项目的核心是 pom.xml,POM(project object model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,如何声明依赖等等。下面是 pom 文件中各个标签的用法和含义: 1. `...
maven配置文件pom.xml
springmvc+maven+ibatis+jetty的pom配置文件,平时书写太麻烦
dubbo与spring4集成maven pom文件 此pom为我生产项目中的配置,开始想省事使用spring boot,结果与springmvc不兼容,导致tomcat启动失败,后来找了maven shade来打包,解决了xsd兼容问题 另外注意,dubbo阿里的分支...
POM 文件是 Maven 项目的基础配置文件,通过它,Maven 能够自动完成项目的构建过程,包括编译、测试、打包、部署等一系列操作。合理配置 POM 文件可以帮助开发者更高效地管理项目的构建流程和依赖关系,提高开发效率...
本主题将深入探讨如何在Maven的配置文件`pom.xml`中添加Oracle数据库驱动(jar)以实现与Oracle数据库的连接。首先,我们需要理解`pom.xml`文件的作用,它是Maven项目的元数据文件,包含了项目的信息、构建指令以及...