pom
(project object model
)
pom.xml
文件是Maven
项目的配置文件,一般都是放在项目的根目录下。
pom.xml
文件中节点含义如下:
pom.xml
文件的根节点,配置命名空间。
示例:
<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/maven-v4_0_0.xsd">
</project>
pom
的版本,固定为4.0.0
示例:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</project>
groupId
是项目创建团体或组织的唯一标志符,通常是域名倒写,如org.apache.maven
artifactId
是artifact(产物)
的编号,他在groupId
下必须唯一。
version
是artifact
的版本,如1.0
、0.0.1-SNAPSHOT
等, 其中SNAPSHOT
表示项目开发中,为开发版本。
示例:
<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/maven-v4_0_0.xsd">
<groupId>com.fpliu</groupId>
<artifactId>maven-newton-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
这3个组合起来称为坐标,唯一定位一个artifact
。
packaging
用于指定打包的方式,如jar
、war
、ear
、aar
等等。默认为jar
。
packaging
不仅决定着项目最终产生何种后缀的文件,也决定着build过程中会使用什么样的插件。
示例:
<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/maven-v4_0_0.xsd">
<packaging>maven-plugin</packaging>
</project>
name
是项目的名字。
description
是项目的描述。
url
是项目的网址。
这3项是在Maven
生成的文档中展现。一般不是必须,但是最好填写上。
示例:
<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/maven-v4_0_0.xsd">
<name>maven-newton-plugin Maven Mojo</name>
<url>http://maven.apache.org</url>
</project>
dependencies
节点用于配置该项目依赖的库。
dependencies
节点下可以有多个dependency
子节点,dependency
子节点中添加具体依赖的坐标(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/maven-v4_0_0.xsd">
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>
build
节点用于配置该项目依赖的插件。
build
节点下的plugins
子节点下可以有多个plugin
子节点,plugin
子节点中添加具体依赖的坐标(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/maven-v4_0_0.xsd">
<build>
<plugins>
<plugin>
<groupId>com.fpliu</groupId>
<artifactId>maven-newton-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
</project>
parent
节点用于配置多个子模块中需要的公共依赖。
Spring Boot就是使用parent
依赖他们封装好的starter
, 从而提高开发效率的。
示例:
<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/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependencies>
</project>
注意:parent
看起来与dependency
差不多, 但是,实际上他们的行为是有差别的。具体差别就是,当你用parent
的使用, 只是依赖指定的那个pom
的依赖,不会依赖它自己的代码。