码迷,mamicode.com
首页 > 其他好文 > 详细

Maven-POM

时间:2016-05-24 16:52:03      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

What is a POM?

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也会列出。

Minimal POM

注意,一个工程应该只有一个POM文件。

一个POM的最低配置如下:

  • project root (项目根元素 <project>
  • modelVersion - should be set to 4.0.0
  • groupId - the id of the project‘s group. (工程组标识,在一个组织或项目中是唯一的)
  • artifactId - the id of the artifact (project) (工程标识,通常是工程的名称。groupId与artifactId一起定义了artifact在仓库中的位置)
  • version - the version of the artifact under the specified group(工程版本号,在artifact仓库中,用来区分不同的版本)

例子:

<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

Super POM是 maven 的缺省 POM。除了显式的设置以外,所有POM将扩展Super POM,这意味着Super POM中的配置将会被你为你的工程创建的POM继承。

MAVEN使用effective pom(Super pom + 自定义配置)来执行相关的目标,它帮助开发者在pom.xml中做尽可能少的配置,当然这些配置也可以被方便地重写 。

查看super pom默认配置的命令: mvn help: effective-pom

技术分享

 

 

Reference

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html

Maven-POM

标签:

原文地址:http://www.cnblogs.com/lddbupt/p/5523823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!