zoukankan      html  css  js  c++  java
  • Maven项目中pom文件分析

    pom英文全称: project object model 

    1、概述

    pom.xml文件描述了maven项目的基本信息,比如groupIdartifactIdversion等。也可以对maven项目的远程仓库,打包形式,资源依赖关系等进行配置。一个最简单的pom.xml文件至少需要包含四个元素:modelVersion, groupId, artiffactIdversion

    在一个pom文件中,如没有显式声明parent标签,则表明该项目默认继承一个原始的pom.xml文件(见参考资料[1])。

    比如一个基本的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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>                                //父项目的信息
        <artifactId>shv-parent</artifactId>
        <groupId>com.tt.aa</groupId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <groupId>com.tt.aa</groupId>        //当前项目的信息
      <artifactId>shvBig</artifactId>
      <version>0.0.1-SNAPSHOT</version>            //SNAPSHOT(快照)表示该项目还在开发中。
      <name>shvBig</name>
      <url>http://maven.apache.org</url>
    </project>

    其中主要的标签含义如下:

    Project:所有元素的根元素,该元素声明的信息主要为了方便第三方插件使用。

    modelVersion:用于指定当前POM模型的版本,对于maven2,maven3只能是4.0.0

    groupId:用于指定当前项目所属的组,比如com.tencent.teg

    artiffactId:当前项目所属组的唯一的ID号,比如:shvMrEngineWithBigram

    Version:用于指定当前项目的版本编号。比如:0.0.1-SNAPSHOT。后面的SNAPSHOT常指正在开发中的项目。

    name: 用来声明一个对用户而言比较友好的项目名称。

    2、常用操作。[3]

    1)项目依赖,主要使用dependencies标签。

    <dependencies>                //项目中的所需的额外依赖列表。
            <dependency>            //项目中依赖1。
                <groupId>com.tt.aa</groupId>
                <artifactId>shvUtil</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>            //项目所需的依赖2。
                 <groupId>org.apache.hadoop</groupId>
                 <artifactId>hadoop-core</artifactId>
                 <version>1.1.2</version>
                 <scope>provided</scope>
            </dependency>
        </dependencies>

     

    2)在项目中添加插件,以及对插件的配置

    <plugins>
      <plugin>  
          <groupId>org.apache.maven.plugins</groupId>          //第一个插件
          <artifactId>maven-compiler-plugin</artifactId>  
          <version>2.4.3</version>                  //插件的版本号
          <executions>                          //设置插件的执行方式
              <execution>                          
                <id>copy-dependencies</id>  
                <phase>compile</phase>                  //编译,<phase>package</phase>打包
                <goals>  
                    <goal>copy-dependencies</goal>  //设置项目所依赖的插件
                </goals>  
                <configuration>  
                    //${project.build.directory}为Maven内置变量,缺省为target
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>  
                    //表示是否不包含间接依赖的包 
                    <excludeTransitive>false</excludeTransitive>  
                    //表示复制的jar文件去掉版本信息 
                    <stripVersion>true</stripVersion>  
                </configuration>  
            </execution>
          </executions>  
          <configuration>                          //对插件进行配置
              <source>1.6</source>            //源代码编译版本
              <target>1.6</target>                  //目标平台编译版本;
              <encoding>${project.build.sourceEncoding}</encoding>      //设置插件或资源文件的编码方式。
          </configuration>  
      </plugin>  
    </plugins>

     

    3)设置项目编码方式

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

     

    4源代码打成jar包

    <plugin>  
        <artifactId>maven-source-plugin</artifactId>  
        <version>2.1</version>  
        <configuration>  
            //<finalName>${project.build.name}</finalName> 
            <attach>true</attach>  
            <encoding>${project.build.sourceEncoding}</encoding>  
        </configuration>  
        <executions>  
            <execution>  
                <phase>compile</phase>  
                <goals>  
                    <goal>jar</goal>   
                </goals>  
            </execution>  
        </executions>  
    </plugin>  

    PS:xml代码中的注释方式不对,请忽略这些细节^_^

    关于maven 中的pom文件更详细的介绍:

     http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html

     

    本文参考资料:

    [1] http://my.oschina.net/zh119893/blog/232896. 2016-01-27.

    [2] http://blog.sina.com.cn/s/blog_534f69a001010lpv.html. 2016-01-27.

    [3] http://my.oschina.net/zh119893/blog/276090

     

  • 相关阅读:
    剑指offer——斐波那契数列
    剑指offer——用两个栈实现队列
    剑指offer——二维数组中的查找
    LeetCode第九题—— Palindrome Number(判断回文数)
    java 面试题汇总
    idea设置方法注释
    解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    Timer和TimerTask详解
    java8函数式接口(Functional Interface)
    Python执行选择性粘贴
  • 原文地址:https://www.cnblogs.com/liuwu265/p/5175413.html
Copyright © 2011-2022 走看看