zoukankan      html  css  js  c++  java
  • (六)Maven之pom.xml文件简单说明

    通过前面几部分知识,我们对maven已经有了初步的印象,就像Make的Makefile、Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明依赖,等等。我们来看看maven中pom.xml文件主要标签的意思及其用法,来看一下pom.xml文件的结构:

     

      1 <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">
      2     <modelVersion>4.0.0</modelVersion>
      3 
      4     <groupId>com.uidp</groupId>
      5     <artifactId>UidpParent</artifactId>
      6     <version>0.0.1-SNAPSHOT</version>
      7     <packaging>pom</packaging>
      8 
      9     <!--当前项目的全称(名称)-->
     10     <name>UidpParent</name>
     11     <!--当前项目的主页的URL-->
     12     <url>http://maven.apache.org</url>
     13 
     14     <!--配置常用属性或定义一系列版本号-->
     15     <properties>
     16         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     17 
     18         <repository-url>http://192.168.0.70:8081/content/groups/public/</repository-url>
     19 
     20         <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
     21         <maven-war-plugin.version>2.4</maven-war-plugin.version>
     22         <maven-javadoc-plugin.version>2.9.1</maven-javadoc-plugin.version>
     23         <maven-release-plugin.version>2.4.1</maven-release-plugin.version>
     24         <maven-deploy-plugin.version>2.7</maven-deploy-plugin.version>
     25 
     26 
     27 
     28         <junit.version>4.11</junit.version>
     29         <oracle.version>10.2.0.4</oracle.version>
     30         <springframework.version>3.2.8.RELEASE</springframework.version>
     31         <mybatis.version>3.2.2</mybatis.version>
     32         <mybatis-spring.version>1.2.0</mybatis-spring.version>
     33         <mysql-driver.version>5.1.25</mysql-driver.version>
     34         <aspectjweaver.version>1.7.3</aspectjweaver.version>
     35 
     36         <commons-dbcp.version>1.4</commons-dbcp.version>
     37         <commons-pool.version>1.5.5</commons-pool.version>
     38         <commons-fileupload.version>1.2.2</commons-fileupload.version>
     39 
     40         <log4j.version>1.2.17</log4j.version>
     41         <slf4j-api.version>1.7.5</slf4j-api.version>
     42         <slf4j-log4j12.version>1.7.5</slf4j-log4j12.version>
     43 
     44         <freemarker.version>2.3.19</freemarker.version>
     45 
     46         <jackson-core.version>2.5.0</jackson-core.version>
     47         <jackson-mapper-asl.version>1.9.7</jackson-mapper-asl.version>
     48 
     49         <javax.servlet-api.version>3.0.1</javax.servlet-api.version>
     50         <jsp-api.version>2.2</jsp-api.version>
     51         <kryo.version>1.04</kryo.version>
     52         <snakeyaml.version>1.8</snakeyaml.version>
     53         <jedis.version>2.0.0</jedis.version>
     54         <commons-lang.version>2.6</commons-lang.version>
     55 
     56 
     57         <mockito-core.version>1.8.5</mockito-core.version>
     58         <powermock-core.version>1.4.9</powermock-core.version>
     59         <powermock-api-mockito.version>1.4.9</powermock-api-mockito.version>
     60         <powermock-module-junit4.version>1.4.9</powermock-module-junit4.version>
     61 
     62 
     63     </properties>
     64 
     65     <!--依赖管理-->
     66     <dependencyManagement>
     67         <dependencies>
     68 
     69             <dependency>
     70                 <groupId>junit</groupId>
     71                 <artifactId>junit</artifactId>
     72                 <version>${junit.version}</version>
     73                 <scope>test</scope>
     74             </dependency>
     75 
     76             <!-- spring jar begin -->
     77             <dependency>
     78                 <groupId>org.springframework</groupId>
     79                 <artifactId>spring-web</artifactId>
     80                 <version>${springframework.version}</version>
     81             </dependency>
     82 
     83             <dependency>
     84                 <groupId>org.springframework</groupId>
     85                 <artifactId>spring-webmvc</artifactId>
     86                 <version>${springframework.version}</version>
     87             </dependency>
     88 
     89             <dependency>
     90                 <groupId>org.springframework</groupId>
     91                 <artifactId>spring-beans</artifactId>
     92                 <version>${springframework.version}</version>
     93             </dependency>
     94 
     95             <dependency>
     96                 <groupId>org.springframework</groupId>
     97                 <artifactId>spring-context</artifactId>
     98                 <version>${springframework.version}</version>
     99             </dependency>
    100 
    101             <dependency>
    102                 <groupId>org.springframework</groupId>
    103                 <artifactId>spring-context-support</artifactId>
    104                 <version>${springframework.version}</version>
    105             </dependency>
    106 
    107             <dependency>
    108                 <groupId>org.springframework</groupId>
    109                 <artifactId>spring-core</artifactId>
    110                 <version>${springframework.version}</version>
    111             </dependency>
    112 
    113             <dependency>
    114                 <groupId>org.springframework</groupId>
    115                 <artifactId>spring-jdbc</artifactId>
    116                 <version>${springframework.version}</version>
    117             </dependency>
    118 
    119             <dependency>
    120                 <groupId>org.springframework</groupId>
    121                 <artifactId>spring-tx</artifactId>
    122                 <version>${springframework.version}</version>
    123             </dependency>
    124 
    125             <dependency>
    126                 <groupId>org.springframework</groupId>
    127                 <artifactId>spring-test</artifactId>
    128                 <version>${springframework.version}</version>
    129             </dependency>
    130 
    131             <dependency>
    132                 <groupId>org.springframework</groupId>
    133                 <artifactId>spring-expression</artifactId>
    134                 <version>${springframework.version}</version>
    135             </dependency>
    136 
    137             <dependency>
    138                 <groupId>org.springframework</groupId>
    139                 <artifactId>spring-aop</artifactId>
    140                 <version>${springframework.version}</version>
    141             </dependency>
    142             <!-- spring jar end -->
    143 
    144             <dependency>
    145                 <groupId>org.mybatis</groupId>
    146                 <artifactId>mybatis</artifactId>
    147                 <version>${mybatis.version}</version>
    148             </dependency>
    149 
    150             <dependency>
    151                 <groupId>org.mybatis</groupId>
    152                 <artifactId>mybatis-spring</artifactId>
    153                 <version>${mybatis-spring.version}</version>
    154             </dependency>
    155 
    156             <dependency>
    157                 <groupId>mysql</groupId>
    158                 <artifactId>mysql-connector-java</artifactId>
    159                 <version>${mysql-driver.version}</version>
    160             </dependency>
    161 
    162             <dependency>
    163                 <groupId>com.oracle</groupId>
    164                 <artifactId>ojdbc14</artifactId>
    165                 <version>${oracle.version}</version>
    166             </dependency>
    167 
    168             <dependency>
    169                 <groupId>org.aspectj</groupId>
    170                 <artifactId>aspectjweaver</artifactId>
    171                 <version>${aspectjweaver.version}</version>
    172             </dependency>
    173 
    174 
    175             <dependency>
    176                 <groupId>commons-dbcp</groupId>
    177                 <artifactId>commons-dbcp</artifactId>
    178                 <version>${commons-dbcp.version}</version>
    179             </dependency>
    180             <dependency>
    181                 <groupId>commons-pool</groupId>
    182                 <artifactId>commons-pool</artifactId>
    183                 <version>${commons-pool.version}</version>
    184             </dependency>
    185             <dependency>
    186                 <groupId>commons-fileupload</groupId>
    187                 <artifactId>commons-fileupload</artifactId>
    188                 <version>${commons-fileupload.version}</version>
    189             </dependency>
    190 
    191 
    192             <!-- log jar -->
    193             <dependency>
    194                 <groupId>log4j</groupId>
    195                 <artifactId>log4j</artifactId>
    196                 <version>${log4j.version}</version>
    197             </dependency>
    198             <dependency>
    199                 <groupId>org.slf4j</groupId>
    200                 <artifactId>slf4j-api</artifactId>
    201                 <version>${slf4j-api.version}</version>
    202             </dependency>
    203             <dependency>
    204                 <groupId>org.slf4j</groupId>
    205                 <artifactId>slf4j-log4j12</artifactId>
    206                 <version>${slf4j-log4j12.version}</version>
    207             </dependency>
    208 
    209             <!-- freemarker -->
    210             <dependency>
    211                 <groupId>org.freemarker</groupId>
    212                 <artifactId>freemarker</artifactId>
    213                 <version>${freemarker.version}</version>
    214             </dependency>
    215 
    216 
    217             <!-- jackson -->
    218             <dependency>
    219                 <groupId>com.fasterxml.jackson.core</groupId>
    220                 <artifactId>jackson-core</artifactId>
    221                 <version>${jackson-core.version}</version>
    222             </dependency>
    223             <dependency>
    224                 <groupId>org.codehaus.jackson</groupId>
    225                 <artifactId>jackson-mapper-asl</artifactId>
    226                 <version>${jackson-mapper-asl.version}</version>
    227             </dependency>
    228 
    229             <dependency>
    230                 <groupId>javax.servlet</groupId>
    231                 <artifactId>javax.servlet-api</artifactId>
    232                 <version>${javax.servlet-api.version}</version>
    233                 <scope>provided</scope>
    234             </dependency>
    235 
    236             <dependency>
    237                 <groupId>javax.servlet.jsp</groupId>
    238                 <artifactId>jsp-api</artifactId>
    239                 <version>${jsp-api.version}</version>
    240                 <scope>provided</scope>
    241             </dependency>
    242 
    243             <dependency>
    244                 <groupId>com.googlecode</groupId>
    245                 <artifactId>kryo</artifactId>
    246                 <version>${kryo.version}</version>
    247             </dependency>
    248 
    249             <dependency>
    250                 <groupId>org.yaml</groupId>
    251                 <artifactId>snakeyaml</artifactId>
    252                 <version>${snakeyaml.version}</version>
    253             </dependency>
    254 
    255             <dependency>
    256                 <groupId>redis.clients</groupId>
    257                 <artifactId>jedis</artifactId>
    258                 <version>${jedis.version}</version>
    259             </dependency>
    260 
    261             <dependency>
    262                 <groupId>commons-lang</groupId>
    263                 <artifactId>commons-lang</artifactId>
    264                 <version>${commons-lang.version}</version>
    265             </dependency>
    266 
    267 
    268             <dependency>
    269                 <groupId>org.mockito</groupId>
    270                 <artifactId>mockito-core</artifactId>
    271                 <version>${mockito-core.version}</version>
    272                 <scope>test</scope>
    273             </dependency>
    274 
    275             <dependency>
    276                 <groupId>org.powermock</groupId>
    277                 <artifactId>powermock-core</artifactId>
    278                 <version>${powermock-core.version}</version>
    279                 <scope>test</scope>
    280             </dependency>
    281 
    282             <dependency>
    283                 <groupId>org.powermock</groupId>
    284                 <artifactId>powermock-api-mockito</artifactId>
    285                 <version>${powermock-api-mockito.version}</version>
    286                 <scope>test</scope>
    287             </dependency>
    288 
    289             <dependency>
    290                 <groupId>org.powermock</groupId>
    291                 <artifactId>powermock-module-junit4</artifactId>
    292                 <version>${powermock-module-junit4.version}</version>
    293                 <scope>test</scope>
    294             </dependency>
    295 
    296 
    297         </dependencies>
    298     </dependencyManagement>
    299     
    300     <distributionManagement>
    301         <repository>
    302             <id>releases</id>
    303             <name>public</name>
    304             <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
    305         </repository>
    306         <snapshotRepository>
    307             <id>snapshots</id>
    308             <name>Snapshots</name>
    309             <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
    310         </snapshotRepository>
    311     </distributionManagement>
    312     
    313     
    314     <!--构建管理-->
    315     <build>
    316         <plugins>
    317 
    318             <plugin>
    319                 <groupId>org.apache.maven.plugins</groupId>
    320                 <artifactId>maven-compiler-plugin</artifactId>
    321                 <version>${maven-compiler-plugin.version}</version>
    322                 <configuration>
    323                     <source>1.7</source> <!-- 源代码使用的开发版本 -->
    324                     <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
    325                 </configuration>
    326             </plugin>
    327 
    328             <plugin>
    329                 <groupId>org.apache.maven.plugins</groupId>
    330                 <artifactId>maven-javadoc-plugin</artifactId>
    331                 <version>${maven-javadoc-plugin.version}</version>
    332             </plugin>
    333 
    334 
    335             <plugin>
    336                 <groupId>org.apache.maven.plugins</groupId>
    337                 <artifactId>maven-release-plugin</artifactId>
    338                 <version>${maven-release-plugin.version}</version>
    339             </plugin>
    340 
    341             <plugin>
    342                 <groupId>org.apache.maven.plugins</groupId>
    343                 <artifactId>maven-deploy-plugin</artifactId>
    344                 <version>${maven-deploy-plugin.version}</version>
    345                 <configuration>
    346                     <updateReleaseInfo>true</updateReleaseInfo>
    347                 </configuration>
    348             </plugin>
    349 
    350         </plugins>
    351     </build>
    352 
    353 
    354     <pluginRepositories>
    355         <pluginRepository>
    356             <id>nexus</id>
    357             <name>nexus</name>
    358             <url>${repository-url}</url>
    359             <releases>
    360                 <enabled>true</enabled>
    361             </releases>
    362             <snapshots>
    363                 <enabled>true</enabled>
    364             </snapshots>
    365         </pluginRepository>
    366     </pluginRepositories>
    367 
    368     
    369 </project>

    我们可以看到maven的pom.xml文件结构非常清晰,把项目创建好后,我们基本上是在dependencies元素下添加一些子元素及plugins元素下添加一些插件,下面我们来介绍一下各个元素的含义。

    1) project是所有pom.xml的根元素,并且在里面定义了命名空间和xsd元素。

    2) modelVersion 当前pom模型的版本。

    3) groupId定义当前maven项目隶属的实际项目,并会根据这给项目建立包结构。

    4) artifactId定义项目中的某个模块名称,如果只有一个模块那就是项目的名称。

    5) version 定义maven项目当前所处的版本号,默认0.0.1-SNAPSHOT为快照版本。

    6) packaging定义maven项目的打包方式,可以是jar包、war包、pom。

    7) dependencies元素底下就是加入依赖包的地方,那么我们从哪里查询依赖包呢,可以查询的地方比较多,我给出一个大家用得比较多的仓库:http://mvnrepository.com

    8) 每个dependency都是一个依赖包,依赖包也就是在dependency里面定义各个依赖包的坐标,这样maven就会从网上下载依赖包到你本地仓库中,有所不同的是dependency元素包含了一个子元素,这个就是对maven生命周期的一个说明,当然除了上面四个子元素外,还包含几个其他的元素。

       (1)type说明依赖的类型

       (2)optional标记依赖是否可选

       (3)exclusions 用来排斥传递依赖

       我们具体来看看这个结构:

       <dependency>

         <groupId>实际项目</groupId>

         <artifactId>模块</artifactId>

         <version>版本</version>

         <type>依赖类型</type>

         <scope>依赖范围</scope>

         <optional>依赖是否可选</optional>

         <!—主要用于排除传递性依赖-->

         <exclusions>

           <exclusion>

             <groupId>…</groupId>

             <artifactId>…</artifactId>

           </exclusion>

         </exclusions>

       </dependency>

     

    Maven是通过groupId、artifactId、version这三类似于坐标的元素来确定唯一性的,因此这三个元素对于每个依赖大多是必须的,后面会详细介绍依赖、聚合、继承等知识点。

     

    没有任何实际的Java代码,我们能够定义一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,我们可以称之为解耦。这在很大程度上避免了Java代码和POM代码的相互影响。只要我们定义的POM稳定后,日常的Java代码开发工作中基本不会涉及到POM的修改。

     

    可爱博主:AlanLee

    博客地址:http://www.cnblogs.com/AlanLee

    本文出自博客园,欢迎大家加入博客园。

  • 相关阅读:
    [UGUI]事件机制
    [C#]CompareTo
    [Unity算法]交换排序(二):快速排序
    [Unity算法]交换排序(一):冒泡排序
    [Lua]string(二):string.sub处理中文
    [Lua]string(一):string库
    [Unity热更新]LuaFramework14.打包、加载和卸载策略
    [Unity热更新]LuaFramework13.事件派发
    数仓day01
    大数据学习day39----数据仓库02------1. log4j 2. 父子maven工程(子spring项目的创建)3.项目开发(埋点日志预处理-json数据解析、清洗过滤、数据集成实现、uid回补)
  • 原文地址:https://www.cnblogs.com/AlanLee/p/6139960.html
Copyright © 2011-2022 走看看