标签:
Project Object Model,工程对象模型。是maven工作时的基本单元。它是一个工程信息和配置细节的xml文件,maven使用这些信息来构建整个工程。大多数工程包含了一些相同的缺省配置。
例如,构建目录target,源代码目录src/main/java,测试源代码目录src/test/java,等等。
POM在Maven1中的对应文件名为project.xml,而在maven2中改为pom.xml。执行目标或插件现在都在pom.xml中配置,而不是maven.xml文件。当执行一个任务或目标时,maven会搜索当前目录下的POM,读取POM,获取必需的配置信息,然后执行该目标。
一些配置信息会在POM中明确规定,如:dependencies, plugins, goals, build profiles等等。其他信息像project version, description, developers, mailing lists也会列出。
注意,一个工程应该只有一个POM文件。
一个POM的最低配置如下:
例子:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
</project>
一个POM要求三个必须字段:groupId, artifactId, version。这三个值组成了整个工程的全限定名称。
格式是: <groupId>:<artifactId>:<version>
在上例中,它的全限定工程名是 "com.mycompany.app:my-app:1".
正如在第一节中提到的,如果其他配置细节没有指定的话,maven将会使用它们的缺省值。这些缺省值之一就有打包类型(packaging type)。任意一个maven工程都有一个packaging type。如果它没有在POM中指定,那就会使用缺省值JAR。
此外,就像在minimal POM中那样,repositories没有指定。如果你用minimal pom构建你的工程,它将会继承Super POM中的repositories配置。因此,当maven看到minimal pom中的依赖时,它会知道这个依赖可以从Super POM中指定的http://repo.maven.apache.org/maven2 下载。
Super POM是 maven 的缺省 POM。除了显式的设置以外,所有POM将扩展Super POM,这意味着Super POM中的配置将会被你为你的工程创建的POM继承。
MAVEN使用effective pom(Super pom + 自定义配置)来执行相关的目标,它帮助开发者在pom.xml中做尽可能少的配置,当然这些配置也可以被方便地重写 。
查看super pom默认配置的命令: mvn help: effective-pom
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html
标签:
原文地址:http://www.cnblogs.com/lddbupt/p/5523823.html