【Java】Maven的pom.xml

2018-10-07  本文已影响0人  嗖嗖编程

Java项目常用maven管理,了解一下pom.xml

一.什么是pom

pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

二.内容注解

<!-- 当前POM模型的版本 -->
<modelVersion>4.0.0</modelVersion>

<!-- 父项目坐标 -->
<parent>
  <groupId>项目组织唯一的标识符(com.xxx)</groupId>
  <artifactId>项目的唯一的标识符(项目名称)</artifactId>
  <version>版本号</version>
  <!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。-->  
   <relativePath></relativePath>  
</parent>


<!-- 项目坐标 -->
<groupId>项目组织唯一的标识符(com.xxx)</groupId>
<artifactId>项目的唯一的标识符((项目名称))</artifactId>
<packaging>打包类型</packaging>
<version>版本号</version>

<!-- 项目信息 -->
<name>名称</name> 
<description>描述</description>
<url>网址</url>
<inceptionYear>工程的初始时间</inceptionYear>

<!-- 属性 -->
<properties>
  <!-- 定义一些常量 -->
  <jdk.version>1.7</jdk.version>
  <servlet.api.version>3.0.1</servlet.api.version>
  <jsp.api.version>2.1</jsp.api.version>
  <junit.version>4.11</junit.version>
  <mysql.version>5.1.21</mysql.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!-- 依赖管理,父项目中用来统一管理依赖的,子项目中直接使用dependencies -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet.api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- 依赖项 -->
<dependencies>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet.api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

<!--构建项目需要的信息--> 
<build>
  <!--该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->  
  <sourceDirectory></sourceDirectory>  
  <!--该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。--> 
  <scriptSourceDirectory></scriptSourceDirectory>
  <!--该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。--> 
  <testSourceDirectory></testSourceDirectory>
  <!--被编译过的应用程序class文件存放的目录。-->
  <outputDirectory></outputDirectory>
  <!--被编译过的测试class文件存放的目录。-->  
  <testOutputDirectory></testOutputDirectory>
  <!--使用来自该项目的一系列构建扩展-->  
  <extensions>
    <!--描述使用到的构建扩展。--> 
    <extension>
      <!--构建扩展的groupId-->
      <groupId></groupId>
      <!--构建扩展的artifactId-->
      <artifactId></artifactId>
      <!--构建扩展的版本-->
      <version></version>
    </extension>
  </extensions>

  <!--当项目没有规定目标(Maven2 叫做阶段)时的默认值-->  
  <defaultGoal></defaultGoal> 

  <!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。--> 
  <resources>
    <!--这个元素描述了项目相关或测试相关的所有资源路径-->
    <resource>
      <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。-->  
      <targetPath></targetPath> 
      <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->  
      <filtering></filtering>
      <!--描述存放资源的目录,该路径相对POM路径-->
      <directory></directory>
      <!--包含的模式列表,例如**/*.xml.--> 
      <includes></includes>
      <!--排除的模式列表,例如**/*.xml-->
      <excludes></excludes>     
    </resource>
  </resources> 

  <!--这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件。-->
  <testResources> 
    <!--这个元素描述了测试相关的所有资源路径,参见build/resources/resource元素的说明-->  
    <testResource>
      <targetPath></targetPath>
      <filtering></filtering>
      <directory></directory>
      <includes></includes>
      <excludes></excludes>
    </testResource>
  </testResources> 

  <!--构建产生的所有文件存放的目录-->
  <directory></directory>
  <!--产生的构件的文件名,默认值是${artifactId}-${version}。-->
  <finalName></finalName>
  <!--当filtering开关打开时,使用到的过滤器属性文件列表-->
  <filters></filters>

  <!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置--> 
  <pluginManagement>
    <!--使用的插件列表 。-->
    <plugins>
      <!--plugin元素包含描述插件所需要的信息。-->  
      <plugin>
        <!--插件在仓库里的group ID-->
        <groupId/>
        <!--插件在仓库里的artifact ID--> 
        <artifactId/>
        <!--被使用的插件的版本(或版本范围)-->  
        <version/> 
        <!--是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。-->
        <extensions/>  
        <!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->           <executions>
          <!--execution元素包含了插件执行需要的信息-->  
          <execution>            
            <!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标-->
             <id/>
             <!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段-->
             <phase/> 
             <!--配置的执行目标-->
             <goals/>
             <!--配置是否被传播到子POM-->  
             <inherited/> 
             <!--作为DOM对象的配置-->
             <configuration/>
          </execution>
        </executions>

        <!--项目引入插件所需要的额外依赖--> 
        <dependencies>
          <!--参见dependencies/dependency元素-->
          <dependency> 
          </dependency> 
        </dependencies>

        <!--任何配置是否被传播到子项目-->  
        <inherited/>
        <!--作为DOM对象的配置-->
        <configuration/>
      </plugin>
    </plugins>
  </pluginManagement>

  <!--使用的插件列表--> 
  <plugins>
    <!--参见build/pluginManagement/plugins/plugin元素--> 
    <plugin> 
      <groupId/><artifactId/><version/><extensions/>
      <executions>
        <execution>
          <id/><phase/><goals/><inherited/><configuration/> 
        </execution>
      </executions>
      <dependencies>
        <!--参见dependencies/dependency元素-->
        <dependency>
        </dependency>
      </dependencies>
      <goals/><inherited/><configuration/>
    </plugin> 
  </plugins>
</build>

<licenses>证书列表</licenses>

<!--描述项目所属组织的各种属性。Maven产生的文档用--> 
<organization>
  <!--组织的全名-->  
  <name></name>     
  <!--组织主页的URL-->  
  <url></url> 
</organization>

<!--项目开发者列表-->  
<developers>
  <!--某个项目开发者的信息-->
  <developer>
    <!--SCM里项目开发者的唯一标识符-->
    <id></id>
    <!--项目开发者的全名-->  
    <name></name>
    <!--项目开发者的email--> 
    <email></email>
    <!--项目开发者的主页的URL-->  
    <url></url>

    <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色-->
    <roles> 
      <role></role>
      <role></role> 
    </roles>
    
    <!--项目开发者所属组织-->
    <organization></organization>
    <!--项目开发者所属组织的URL-->
    <organizationUrl></organizationUrl> 
    <!--项目开发者属性,如即时消息如何处理等--> 
    <properties>
      <dept></dept> 
    </properties>

    <!--项目开发者所在时区, -11到12范围内的整数。--> 
    <timezone></timezone>
  </developer>
</developers>

<!--项目的其他贡献者列表--> 
<contributors>
  <!--项目的其他贡献者。参见developers/developer元素-->
  <contributor>
  </contributor>
</contributors>
上一篇下一篇

猜你喜欢

热点阅读