zoukankan      html  css  js  c++  java
  • maven 基础

    maven安装链接

    maven基础命令:

    编译命令:mvn compile

    测试命令:mvn test

    清空命令:mvn clean

    打包命令:mvn package

    打包命令:mvn install

    package是把jar打到本项目的target下,而install时把target下的jar安装到本地仓库

    使用maven创建骨架:

    命令:mvn archetype:xxxx

    maven的依赖范围<scope>xxxxx</scope>(默认compile):

    1、test:只在测试的时候有效,编译和打包都不依赖。

    2、compile:在编译范围有效,在编译和打包时都会将依赖打入。

    3、provided:编译测试有效,打包时不会打入,如servlet-api.jar,tomcat已经存在,再打入就会jar包冲突

    4、runtime:再运行时依赖,编译时不依赖。

    依赖的传递:

    test范围不会进行传递

    1、间接依赖,被依赖的不同项目中的内容处于同一级。则依赖先出现的内容。

    假设,某两个项目分别依赖不同版本的同一个项目,而第三个项目又依赖于前两个项目。

    如:A-->xx-1.0,B-->xx-1.1,C-->A,B

    此时C所依赖的时xx-1.0还是xx-1.1?

    此时需要看C先依赖A还是B,即C的pom文件中如果A的依赖在B的前面,则使用A的xx-1.0,A在B后则使用B的xx-1.1

    2、依赖级别不同的时候,使用深度最低的那个。

    如A-->oo-oo-->xx-1.0,B-->xx-1.1,C-->A,B

    此时在C中的pom中无论A和B的依赖顺序如何,C都依赖于B中的xx-1.1,因为A的深度最小。

    如A-->xx-1.0,B-->xx-1.1,C-->A,B,同时C的pom中还存在xx-1.2

    此时由于C中的xx-1.2的深度最低,所以使用C中的xx-1.2

    3、依赖的排除,当出现jar包冲突时使用:

    <dependency>
        <groupId>ooo</groupId>
        <artifactId>ppp</artifactId>
        <version>ppp</version>
        <exclusions>
            <!-- 如下就将名字为xxx的jar包排除了,不需要写版本 -->
            <exclusion>
                <groupId>xxx</groupId>
                <artifactId>xxx</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    聚合和继承:

    聚合:

      当项目存在很多模块的时候,当我们需要对项目模块全部打包的时候,有多少个模块就得打多少次包。于是我们可以采用聚合的方式,新建一个普通的maven项目,将打包集中到一个pom文件中。

    <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>
        <groupId>zttc.itat.user</groupId>
        <artifactId>user-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
        <modules>
            <!-- 聚合是模块的位置 -->
            <module>../user-core</module>
            <module>../user-log</module>
            <module>../user-service</module>
        </modules>
    </project>

    继承:

      项目中多个模块都都是用到的东西我们可以将其集中起来,方便我们管理。于是将相同的东西抽象为一个父类,采用继承的方式。

    parent中的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>
        <groupId>zttc.itat.user</groupId>
        <artifactId>user-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
    <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.10.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.24</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api</artifactId> <version>2.5.20110712</version> <scope>provided</scope> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>user-core</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>user-service</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>user-log</artifactId> <version>${project.version}</version> <exclusions> <!-- 可以排除依赖 --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> </project>

    其中一个子模块的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>
          <groupId>zttc.itat.user</groupId>
          <artifactId>user-parent</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <relativePath>../user-parent/pom.xml</relativePath>
      </parent>
      
      <artifactId>user-core</artifactId>
      <packaging>jar</packaging>
    
      <name>user-core</name>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>dbunit</groupId>
            <artifactId>dbunit</artifactId>
        </dependency>              
      </dependencies>
    </project>

     最终为了方便,我们就将聚合和继承合并:

    <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>
        <groupId>zttc.itat.user</groupId>
        <artifactId>user-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <url>http://maven.apache.org</url>
    
        <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
        <modules>
            <!-- 聚合是模块的位置 -->
            <module>../user-core</module>
            <module>../user-log</module>
            <module>../user-service</module>
        </modules>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.10</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>4.1.10.Final</version>
                </dependency>
                            ...........
            </dependencies>
       </dependencyManagement>
    </project>

     

  • 相关阅读:
    Hadoop 集群搭建步骤
    Linux 常见的命令
    Mysql 的事物理解
    数据库的理论知识
    IDEA debug
    junit 测试
    Mysql 索引的知识
    JSON解析
    java 多线程
    Java集合框架关系图
  • 原文地址:https://www.cnblogs.com/wangmingshun/p/5683008.html
Copyright © 2011-2022 走看看