POM文件详解01

来源:互联网 发布:优秀的java开源项目 编辑:程序博客网 时间:2024/05/16 16:10

POM,Project Object Model,在MAVEN1中叫做project.xml,到maven2后改为pom.xml。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。一个maven项目可以没有任何源代码,但必须包含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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
    <!-- scope 说明
                - compile :默认范围,用于编译
                - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
                - runtime: 在执行时,需要使用
                - test:    用于test任务时使用
                - system: 需要外在提供相应得元素。通过systemPath来取得
                - systemPath: 仅用于范围为system。提供相应的路径
                - optional:   标注可选,当项目自身也是依赖时。用于连续依赖时使用
            -->

POM文件基本属性:

    groupId : 组织标识,例如:com.mycompany.app,在M2_REPO目录下,将是: com/mycompany/app目录。
    artifactId : 项目名称,例如:my-app
    version : 版本号
    packaging : 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par
 <dependencies>:依赖关系


POM文件的关系:
依赖关系:
依赖关系列表(dependency list)是POM的重要部分。

      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.0</version>
          <scope>test</scope>
        </dependency>
        …
      </dependencies>

    groupId , artifactId , version :
    scope : compile(default),provided,runtime,test,system
    exclusions

    
继承关系:允许项目之间存在继承关系
定义父项目

xml 代码

<project>
<modelVersion>4.0.0<modelVersion>
<groupId>org.codehaus.mojo<groupId>
<artifactId>my-parent<artifactId>
<version>2.0version>
<packaging>pom<packaging>
<project>
子项目:主要通过parent设置
<project>
<modelVersion>4.0.0<modelVersion>
<parent>
    <groupId>org.codehaus.mojo<groupId>
    <artifactId>my-parent<artifactId>
    <version>2.0<version>
    <relativePath>../my-parent<relativePath>
<parent>
<artifactId>my-project<artifactId>
<project>

relativePath可以不需要,但是用于指明parent的目录,用于快速查询。

聚合:一个项目有多个模块,也叫做多重模块,或者合成项目。主要通过modules属性实现


<project>
<modelVersion>4.0.0<modelVersion>
<groupId>org.codehaus.mojo<groupId>
<artifactId>my-parent<artifactId>
<version>2.0<version>
<modules>
    <module>my-project1<module>
    <module>my-project2<module>
<modules>
<project>

0 0
原创粉丝点击