maven知识大全

maven工具
    

一、apache的背景知识
apache 软件基金会 
   Dubbo  Log4j  Maven  rocketMq  Tomcat 

why apache?
   印第安部落的名称   
   a patchy server 补丁服务

apache中项目的晋级之路
   准备、孵化、毕业阶段

如何成为顶级的程序员?
1 勇于试错
2 积极参与开源
3 发量不重要


二、Maven解决的问题
maven 是自动化构建工具。
构建:是将工程编译得到的结果部署到服务器上的过程。
编译:.java文件通过javac编译器,编译为.class的字节码文件。

回顾一下传统的方式:
1)使用jar包,下载 -> 放到lib目录下 -> 如果又引用了其他jar -> 继续下载
2)jar包版本不一致/或需要升级,jar包更新。


三、Maven对jar包的管理
1 有一个仓库的概念,统一管理jar包,而每一个jar用坐标来对应位置。
  对一个jar包而言,文件夹+名字+版本号,可以定位到唯一jar。

2 仓库
  本地仓库(本机上的文件夹) -> 中央仓库(maven提供) -> 远程仓库(私服)

  本地仓库是否能找到jar包? 如果jar不存在,去远程仓库查找,如果远程不存在,去中央仓库查找。
  如果都找不到,报错。

  能够做到jar包复用,多个项目共用jar包。

3 Maven项目
  1)需要填写 groupId  artifactId  version (坐标三要素)
       groupId 代表jar所来源的渠道,对应文件夹的名字
               com.duyi / com.alibaba
       artifactId  代表项目的唯一名字  maven-duyi-demo.jar
       version 代表版本号  1.0  2.0 ..     
                  -SNAPSHOT(快照版本,不稳定的)
                  -RELEASE(发布版本,稳定的)   

  2)创建项目后提示是否自动引入包?
       选择自动引入 - enable auto-import

  3)maven项目有一个约定好的目录结构
       设计思想“约定优于配置”   是统一规范

     src 代码总目录
       分级为  main(核心代码和资源)test(测试代码和资源)
         其中main又包含 java(存放代码)resources(存放资源)文件夹

     pom.xml  mvn的核心配置文件         
        一定有项目被打包之后所对应的坐标三要素(创建项目时填写的)


 4 maven的下载和配置
   官网地址: https://maven.apache.org/download.cgi  
   下载  apache-maven-3.6.3-bin.zip  (windows系统) 

      settings.xml是maven软件自身的配置文件

   1)解压缩 ->  存放在英文路径下 ->  进入到bin文件夹 
      ->  copy路径配置环境变量 (我的电脑右键)
   2)验证  ->  命令提示符 -> 输入mvn -v (查看版本号)
   3)关联idea  -> File -> settings -> 搜索maven 
      ->  更改maven home directory为自己下载的maven目录
      ->  设置好settings.xml以及本地仓库 
   4)设置conf目录下的settings.xml
       a) 更改本地仓库的配置
        <localRepository>C:\Users\${用户名}\.m2\repository</localRepository>
       b) 通过镜像的方式更好的从中央仓库下载jar包
        通常使用阿里云提供的镜像 https://yq.aliyun.com/articles/703623
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
       c) 把上述地址copy到settings文件的<mirrors>标签下

    5)在idea的user settings file选项中 找到刚才配置的文件。  
    6)如果出现报错,查看报错日志,Help -> show log in explorer 
       如果出现报错为
       ERROR -      #org.jetbrains.idea.maven - com.google.inject.CreationException: Unable to create injector, see the following errors
       是版本不兼容的问题  更改为3.6.1版本

5 maven的依赖
   存放到<dependencies>标签下
   1)查找依赖坐标,通过https://mvnrepository.com网站找到       
   2)以引用guava为例(google提供的使用最广泛的jar)
    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.1-jre</version>
        </dependency>
    </dependencies>
   3) 依赖有递进关系 
      当引入依赖时,默认引入它依赖的其他jar。
      项目A -> jar包B -> 相当于引入了jar包C 
   4)剔除依赖的方式
      使用<exclusions>标签, 以findbugs为例
      <exclusions>
        <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
        </exclusion>
      </exclusions> 
   5)依赖使用的范围
        构建包含的流程:编译、测试、运行、打包、安装、部署
                     compile test  package install deploy
        在右侧 maven projects标签栏中 打开项目名下面的lifecycle
        如果没有 去View - Tool windows中查找

      使用<scope>标签 放在artifactId下面
        compile缺省值  伴随着项目的整个生命周期而存在。
        provided已提供的  不需要将此依赖打包到项目最终的jar包里。
        runtime运行时使用  
          比如<scope>runtime</scope>
        test 测试时使用
        system 自定义jar包位置 (不推荐)  


6 maven的生命周期
  clean validate compile test package verify install site deploy
  1) clean 项目清理
  2) validate 校验项目的可用性
  3) compile 编译
  4) test 执行单元测试
  5) package 打包
  6) verify 校验测试结果
  7) install 安装
  8) site 网站站点文件的创建(用的非常少)
  9) deploy 部署

  命令效果:
  1) compile 编译
       注意点1:再次验证mvn -v里面的java运行目录,是否是jdk所在目录
              如果不是,说明环境变量缺少JAVA_HOME的配置
       注意点2:编译时需要指定jdk的版本
              maven提供对全局jdk的配置(settings文件中<profiles>标签下)

    <profile>  
        <id>jdk-1.8</id>  
        <activation>  
            <activeByDefault>true</activeByDefault>  
            <jdk>1.8</jdk>  
        </activation>  
        <properties>    
            <maven.compiler.source>1.8</maven.compiler.source>    
            <maven.compiler.target>1.8</maven.compiler.target>    
            <maven.compiler.compilerVersion>1.8
            </maven.compiler.compilerVersion>    
       </properties>  
    </profile>    

    正式编译mvn clean compile
    编译结果出现在根目录下的target文件夹中

    执行打包 mvn clean package
    打包结果,出现了项目的jar包

    执行安装 mvn clean install (打包文件存储到本地仓库中)
    本地仓库中出现对应的文件夹和jar

    执行部署 mvn clean deploy
    首先要配置远程仓库的地址,然后将打包文件上传到远程仓库中

   2) 跳过测试阶段
     方式一: mvn package -DskipTests 虽然跳过单元测试的执行,但仍然会编译代码,不是很推荐使用
     方式二: mvn package -Dmaven.test.skip=true (最最常用的命令之一)既不会执行测试代码也不会编译。

   3) 查看依赖树
      方式一:pom.xml文件中右键 -> diagrams -> show dependencies 
      方式二:mvn dependency:tree
          功能: 更好的解决jar包冲突问题  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值