简介:
使用IDEA新创建Maven Java项目后,项目根目录下有一个pom.xml文件,pom文件包含了项目的基本信息,用来设置项目的项目依赖、插件、项目版本等信息。
执行任务或目标时,Maven 会在当前目录中查找并读取 POM,获取所需的配置信息,然后执行目标。
POM文件中可以指定以下配置信息:
- 项目依赖
- 插件
- 执行目标
- 项目构建 profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
pom文件中的默认配置
每个pom文件必需的元素有根元素:project 元素和三个必需字段:工程组的标识groupId,工程的名称artifactId,版本信息version,如下:
<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><!--maven2.0必须是这样写,现在是maven2唯一支持的版本-->
<groupId>org.example</groupId -->项目唯一标识
<artifactId>datasec-glory-jdbc-driver</artifactId -->项目名称
<version>1.0-SNAPSHOT</version-->项目版本
</project>
pom文件中的依赖dependencies
Dependencies字段用来声明项目依赖的其他项目和组件,有三要素唯一标识其他项目和组件。需要是maven中心包管理的项目或组件,否则需要自己部署,或者通过设置scope为system并指定路径,将依赖项目包含进来。
有时候各个项目多层依赖,如A依赖B,B依赖C,如果在A中依赖B,默认A依赖C,如果A不想依赖C,可以用exclusions将C排除。
<!--该元素描述了项目相关的所有依赖。 这些依赖自动从项目定义的仓库中下载 -->
<dependencies>
<dependency>
<!------------------- 依赖坐标 ----------------->
<!--依赖项目的坐标三元素:groupId + artifactId + version -->
<groupId>com.jdcloud.security</groupId>
<artifactId>datasec-glory-jdbc-driver</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.jdcloud.security</groupId>
<artifactId>datasec-glory-jdbc-test</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
远程仓库列表
远程仓库列表的配置,包括依赖和扩展的远程仓库配置,以及插件的远程仓库配置。在本地仓库找不到的情况下,maven下载依赖、扩展和插件就是从这里配置的远程仓库中进行下载。
需要注意的是release和snapshot两者的区别。release是稳定版本,一经发布不再修改,想发布修改后的项目,只能升级项目版本再进行发布;snapshot是不稳定的,一个snapshot的版本可以不断改变。项目在开发期间一般会使用snapshot,更方便进行频繁的代码更新;一旦发布到外部,或者开发基本完成,代码迭代不再频繁,则推荐使用release。
<!--发现依赖和扩展的远程仓库列表。 -->
<repositories>
<repository>
<!--包含需要连接到远程仓库的信息 -->
<snapshots> <!-- 有了releases和snapshots这两组配置,就可以在每个单独的仓库中,为每种类型的构件采取不同的策略 -->
<enabled>false</enabled> <!--值为true或者false,表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
</snapshots>
<id>central</id> <!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库 -->
<name>libs-releases</nam <!--远程仓库名称 -->
<url>http://artifactory.jd.com/libs-releases</url> <!--远程仓库URL,按protocol://hostname/path形式 -->
</repository>
<repository>
<snapshots/>
<id>snapshots</id>
<name>libs-snapshots</name>
<url>http://artifactory.jd.com/libs-snapshots</url>
</repository>
</repositories>