zoukankan      html  css  js  c++  java
  • Maven基本使用

    Maven基本使用

    一、安装

    • 先去官网下载maven(http://maven.apache.org/download.cgi
    • 下载下来解压后如下所示 
      这里写图片描述
    • 配置环境变量 
      这里写图片描述 
      这里写图片描述
    • 查看配置成功与否 
      这里写图片描述
    • maven配置文件 
      这里写图片描述
    • maven项目目录结构 
      这里写图片描述
    • 使用myeclipse构建maven项目 
      这里写图片描述

    • 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>com.robinliew.foo</groupId>
        <artifactId>foo-war</artifactId>
        <version>0.0.1</version>
      </parent>
    
      <!-- 
        maven 的所有构件均通过坐标进行组织和管理。maven 的坐标通过 5 个元素进行定义,其中 groupId、artifactId、version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的。
    
        groupId组名,主项目标识  定义当前 Maven 项目所属的实际项目,跟 Java 包名类似
        artifactId - 工程名,子项目(模块)标识  定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactId 开头
        packaging - 打包方式  定义项目打包方式,如 jar,war,pom,zip ……,默认为 jar。
        version - 版本
        name - 项目描述名
        classifier:定义项目的附属构件。classifier 不能直接定义,通常由附加的插件帮助生成
     -->
      <groupId>com.robinliew.mavendemo</groupId>
      <version>0.0.1</version>
      <artifactId>com.robinliew.mavendemo</artifactId>
      <packaging>war</packaging>
      <name>mavendemo</name>
      <description>maven快速入门</description>
      <!-- 配置依赖的jar包 ->
      <dependencies>
        <dependency>
                <groupId>junit</groupId>
            <artifactId>junit</artifactId>
                <version>4.11</version>
        </dependency>
    </dependencies>
    
    </project>
    • 依赖详解 
      这里写图片描述

      • 其中依赖范围有如下几种 
        • compile:编译依赖范围,默认值。此选项对编译、测试、运行三种 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在编译、测试、运行的时候都需要该依赖
        • test:测试依赖范围。只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;
        • provided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
        • runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
        • system:系统依赖范围。和 provided 依赖范围一致,需要通过 显示指定,且可以引用环境变量;
        • import:导入依赖范围。使用该选项,通常需要 pom,将目标 pom 的 dependencyManagement 配置导入合并到当前 pom 的 dependencyManagement 元素。
      • 依赖传递和依赖范围 
        • 如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和间接引用的Jar包都下载到本地。
      • 依赖冲突 
        • 路径优先(最短路径)
        • 声明优先:引用路径相同时,先在pom.xml中声明的优先
      • 依赖排除
      <exclusions>
      <exclusion>
          <groupId>xxx</groupId>
          <artifactId>xxx</artifactId>
      </exclusion>
      </exclusions>
    • 创建一个maven工程 
      这里写图片描述 
      默认配置,点击两次next后 
      这里写图片描述 
      如果没有显示上面的archetype骨架列表,则需要我们先进行配置,点击configure如下 
      这里写图片描述 
      远程配置是通过访问http://repo1.maven.org/maven2/archetype-catalog.xml地址进行配置的,由于该文件较大,且访问外国网址速度很慢,可能需要等好一会,下面介绍另一种本地配置方式 
      这里写图片描述 
      这种方式需要提前下载配置文件通。过浏览器查看http://repo1.maven.org/maven2/archetype-catalog.xml页源码(注意:因为文件较大,网速较慢,请多等一会),复制到本地,命名为archetype-catalog.xml。 
      如果你的myeclipse出现卡顿现象,查看是否报GC overhead limit exceeded的错误,如果是可以通过下面的方式解决 
      这里写图片描述
      这里写图片描述 
      创建好的maven工程如下所示 
      这里写图片描述 
      可以看到默认创建的目录结构只有src/main/resources,缺少 src/main/java和src/test/java 。点击该项目后,右击,选择build path–>configure build path。 
      这里写图片描述 
      这里写图片描述 
      这里写图片描述 
      设置完后我们可以查看maven输出目录 
      这里写图片描述
      当然这是可以自己点击edit修改的,没有特殊需求的情况下一般不建议修改。 
      这里写图片描述 
      此时maven项目的目录结构完整了。

    设置 Project Facets,设置部署打包结构,删除测试相关目录 
    这里写图片描述
    这里写图片描述
    此时创建一个maven项目完成了。 
    - 构建及项目部署 
    右键 pom.xml - Run As - Maven -install 
    这里写图片描述 
    这里写图片描述

    二、maven常用的命令

    • 首先通过cmd进入要操作的项目目录 
      这里写图片描述 
      • 常用的几种命令 
        • mvn compile 编译项目源代码
        • mvn clean 删除 target 目录
        • mvn test 运行测试(运行src/test/java中的测试代码)
        • mvn clean package(组合命令) Maven 自动帮我们完成项目的编译、测试、打包
        • mvn install 效果跟mvn clean package命令一样,且项目被打包发布到了 maven 的仓库,以后其他项目需要依赖到这个项目,就可以通过在 pom.xml 文件中添加依赖来引用。
        • mvn archetype:generate 自动创建Maven目录结构 
          • 下面是mvn archetype:generate 的使用例子 
            这里写图片描述 
            默认回车即可,输入groupId等,回车 
            这里写图片描述

    三、仓库

      • maven使用一个仓库,通过声明依赖关系可以引用各个构件,各构件通过坐标被maven管理。
      • maven仓库包括本地仓库和远程仓库。优先从本地仓库(本地仓库默认地址为:${user.home}/.m2/repository。)中寻找相关构件,远程仓库中的构件下载到本地仓库使用。中央仓库是 Maven 核心自带的远程仓库,默认地址:http://repo1.maven.org/maven2。私服是架设在本机或局域网中的一种特殊的远程仓库,通过私服可以方便的管理其它所有的外部远程仓库。
      • 本地仓库的配置 
        这里写图片描述 
        这里写图片描述
      • 中央仓库配置(maven默认配置好的) 
        这里写图片描述 
        这里写图片描述
      • 镜像仓库的配置 
        这里写图片描述
      • 私服的搭建 
        大多数公司使用私服,暂时先写到这,后面抽时间再介绍搭建私服
  • 相关阅读:
    观察者模式的结构
    策略模式
    EJB 配置多个数据源
    EJB3 调用的存储过程
    Android学习笔记_49_Android中自定义属性(attrs.xml,TypedArray的使用)
    Android学习笔记_48_若水新闻客户端源码剖析
    博客样式
    oracle 基础知识(四)常用函数
    oracle 基础知识(三)
    oracle 基础语法(二)
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9533356.html
Copyright © 2011-2022 走看看