maven学习(3)pom.xml文件说明以及常用指令


pom.xml文件的结构

在下面的pom文件中,我们可以看到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这三类似于坐标的元素来确定唯一性的,因此这三个元素对于每个依赖大多是必须的。

<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.0modelVersion>

    <groupId>com.uidpgroupId>
    <artifactId>UidpParentartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>pompackaging>

    
    <name>UidpParentname>
    
    <url>http://maven.apache.orgurl>

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

        <repository-url>http://192.168.0.70:8081/content/groups/public/repository-url>

        <maven-compiler-plugin.version>3.1maven-compiler-plugin.version>
        <maven-war-plugin.version>2.4maven-war-plugin.version>
        <maven-javadoc-plugin.version>2.9.1maven-javadoc-plugin.version>
        <maven-release-plugin.version>2.4.1maven-release-plugin.version>
        <maven-deploy-plugin.version>2.7maven-deploy-plugin.version>



        <junit.version>4.11junit.version>
        <oracle.version>10.2.0.4oracle.version>
        <springframework.version>3.2.8.RELEASEspringframework.version>
        <mybatis.version>3.2.2mybatis.version>
        <mybatis-spring.version>1.2.0mybatis-spring.version>
        <mysql-driver.version>5.1.25mysql-driver.version>
        <aspectjweaver.version>1.7.3aspectjweaver.version>

        <commons-dbcp.version>1.4commons-dbcp.version>
        <commons-pool.version>1.5.5commons-pool.version>
        <commons-fileupload.version>1.2.2commons-fileupload.version>

        <log4j.version>1.2.17log4j.version>
        <slf4j-api.version>1.7.5slf4j-api.version>
        <slf4j-log4j12.version>1.7.5slf4j-log4j12.version>

        <freemarker.version>2.3.19freemarker.version>

        <jackson-core.version>2.5.0jackson-core.version>
        <jackson-mapper-asl.version>1.9.7jackson-mapper-asl.version>

        <javax.servlet-api.version>3.0.1javax.servlet-api.version>
        <jsp-api.version>2.2jsp-api.version>
        <kryo.version>1.04kryo.version>
        <snakeyaml.version>1.8snakeyaml.version>
        <jedis.version>2.0.0jedis.version>
        <commons-lang.version>2.6commons-lang.version>


        <mockito-core.version>1.8.5mockito-core.version>
        <powermock-core.version>1.4.9powermock-core.version>
        <powermock-api-mockito.version>1.4.9powermock-api-mockito.version>
        <powermock-module-junit4.version>1.4.9powermock-module-junit4.version>


    properties>

    
    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>${junit.version}version>
                <scope>testscope>
            dependency>

            
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webmvcartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-beansartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-contextartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-context-supportartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-coreartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-jdbcartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-txartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-testartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-expressionartifactId>
                <version>${springframework.version}version>
            dependency>

            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-aopartifactId>
                <version>${springframework.version}version>
            dependency>
            

            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>${mybatis.version}version>
            dependency>

            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatis-springartifactId>
                <version>${mybatis-spring.version}version>
            dependency>

            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql-driver.version}version>
            dependency>

            <dependency>
                <groupId>com.oraclegroupId>
                <artifactId>ojdbc14artifactId>
                <version>${oracle.version}version>
            dependency>

            <dependency>
                <groupId>org.aspectjgroupId>
                <artifactId>aspectjweaverartifactId>
                <version>${aspectjweaver.version}version>
            dependency>


            <dependency>
                <groupId>commons-dbcpgroupId>
                <artifactId>commons-dbcpartifactId>
                <version>${commons-dbcp.version}version>
            dependency>
            <dependency>
                <groupId>commons-poolgroupId>
                <artifactId>commons-poolartifactId>
                <version>${commons-pool.version}version>
            dependency>
            <dependency>
                <groupId>commons-fileuploadgroupId>
                <artifactId>commons-fileuploadartifactId>
                <version>${commons-fileupload.version}version>
            dependency>


            
            <dependency>
                <groupId>log4jgroupId>
                <artifactId>log4jartifactId>
                <version>${log4j.version}version>
            dependency>
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-apiartifactId>
                <version>${slf4j-api.version}version>
            dependency>
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-log4j12artifactId>
                <version>${slf4j-log4j12.version}version>
            dependency>

            
            <dependency>
                <groupId>org.freemarkergroupId>
                <artifactId>freemarkerartifactId>
                <version>${freemarker.version}version>
            dependency>


            
            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-coreartifactId>
                <version>${jackson-core.version}version>
            dependency>
            <dependency>
                <groupId>org.codehaus.jacksongroupId>
                <artifactId>jackson-mapper-aslartifactId>
                <version>${jackson-mapper-asl.version}version>
            dependency>

            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>javax.servlet-apiartifactId>
                <version>${javax.servlet-api.version}version>
                <scope>providedscope>
            dependency>

            <dependency>
                <groupId>javax.servlet.jspgroupId>
                <artifactId>jsp-apiartifactId>
                <version>${jsp-api.version}version>
                <scope>providedscope>
            dependency>

            <dependency>
                <groupId>com.googlecodegroupId>
                <artifactId>kryoartifactId>
                <version>${kryo.version}version>
            dependency>

            <dependency>
                <groupId>org.yamlgroupId>
                <artifactId>snakeyamlartifactId>
                <version>${snakeyaml.version}version>
            dependency>

            <dependency>
                <groupId>redis.clientsgroupId>
                <artifactId>jedisartifactId>
                <version>${jedis.version}version>
            dependency>

            <dependency>
                <groupId>commons-langgroupId>
                <artifactId>commons-langartifactId>
                <version>${commons-lang.version}version>
            dependency>


            <dependency>
                <groupId>org.mockitogroupId>
                <artifactId>mockito-coreartifactId>
                <version>${mockito-core.version}version>
                <scope>testscope>
            dependency>

            <dependency>
                <groupId>org.powermockgroupId>
                <artifactId>powermock-coreartifactId>
                <version>${powermock-core.version}version>
                <scope>testscope>
            dependency>

            <dependency>
                <groupId>org.powermockgroupId>
                <artifactId>powermock-api-mockitoartifactId>
                <version>${powermock-api-mockito.version}version>
                <scope>testscope>
            dependency>

            <dependency>
                <groupId>org.powermockgroupId>
                <artifactId>powermock-module-junit4artifactId>
                <version>${powermock-module-junit4.version}version>
                <scope>testscope>
            dependency>


        dependencies>
    dependencyManagement>
    
    <distributionManagement>
        <repository>
            <id>releasesid>
            <name>publicname>
            <url>http://59.50.95.66:8081/nexus/content/repositories/releasesurl>
        repository>
        <snapshotRepository>
            <id>snapshotsid>
            <name>Snapshotsname>
            <url>http://59.50.95.66:8081/nexus/content/repositories/snapshotsurl>
        snapshotRepository>
    distributionManagement>
    
    
    
    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>${maven-compiler-plugin.version}version>
                <configuration>
                    <source>1.7source> 
                    <target>1.7target> 
                configuration>
            plugin>

            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-javadoc-pluginartifactId>
                <version>${maven-javadoc-plugin.version}version>
            plugin>


            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-release-pluginartifactId>
                <version>${maven-release-plugin.version}version>
            plugin>

            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-deploy-pluginartifactId>
                <version>${maven-deploy-plugin.version}version>
                <configuration>
                    <updateReleaseInfo>trueupdateReleaseInfo>
                configuration>
            plugin>

        plugins>
    build>


    <pluginRepositories>
        <pluginRepository>
            <id>nexusid>
            <name>nexusname>
            <url>${repository-url}url>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>trueenabled>
            snapshots>
        pluginRepository>
    pluginRepositories>

    
project>