超级POM文件
-
POM,Project Object Model
,在MAVEN1中叫做project.xml,到maven2后改为pom.xml。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。一个maven项目可以没有任何源代码,但必须包含pom文件。 -
位于
$(M2_HOME)/lib/maven-model-builder-3.6.0.jar
内的包\org\apache\maven\model\pom-4.0.0.xml
,它是所有POM
文件的根,该POM主要定义中央仓库和使用中的插件。
POM文件配置详解
<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">
<!--项目顶层节点project modelVersion为固定格式 默认为4.0.0-->
<modelVersion>4.0.0</modelVersion>
<!--
-- 1 项目自身的GAV坐标
-- 2 打包方式:一般项目选择jar(默认),web项目为war,聚合和继承项目的父项目配置为POM
-->
<groupId>cn.yuanjianfeng.maven</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hello</hello>
<description>Hello project for first p</description>
<parent>
<!--在继承项目时配置父项目的GAV坐标,使用parent表示继承某个pom-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<proerties>
<!--
-- 1 配置键值对的属性,常用的系统配置属性
-- 2 自定义属性配置,后续的配置文件中可以使用${}进行访问.如统一配置版本号等
-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<springframework.version>5.0.6.RELEASE</springframework.version>
</properties>
<dependencies>
<!-- dependencies节点管理具体的依赖项,实际导入jar包.主要配置GAV:实际jar包的坐标 -->
<dependency>
<!-- 项目依赖坐标的GAV -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!--依赖范围
- compile:默认值.参与编译 运行 测试.
- test:只参与测试,不会被打包.
- provided:等同于compile,但会被打包排除掉.常见的为jsp servlet等依赖,容器会提供.
-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
<!-- 当计算传递依赖时,从依赖构件列表里,列出被排除的依赖构件集.
即告诉maven你只依赖指定的项目,不依赖项目的依赖. 此元素主要用于解决版本冲突问题 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<!-- dependencyManagement定义依赖,不实际导入Jar包,用在父模块中-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<filtering>true</filtering>
<!--描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/resources</directory>
<directory>src/main/java</directory>
<!--包含的模式列表 -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 -->
<excludes>
<exclude>jdbc.properties</exclude>
</excludes>
</resource>
</resources>
<pluginManagement>
<!--不实际导入,可在父项目中预定义插件的版本信息-->
<plugins>
<plugin>
<!--插件的GAV信息,所有Maven插件groupId为org.apache.maven.plugins-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven.sourcePlugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!--配置插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<!--配置执行-->
<executions>
<!--具体的执行任务-->
<execution>
<!--显示在插件目标后的名称,代表任务的唯一id-->
<id>attach-sources</id>
<!--插件绑定的阶段-->
<phase>verify</phase>
<!--插件执行的任务-->
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
网友评论