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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM