美文网首页
Maven总结

Maven总结

作者: icecrea | 来源:发表于2017-11-12 15:29 被阅读9次

    Maven是基于项目对象模型pom,通过一小段信息来管理项目的构建、报告和文档的项目软件管理工具。

    maven目录结构如下:
    bin包含mvn的运行脚本
    boot目录包含一个类加载器的框架
    conf是配置文件
    lib是类库


    配置环境变量



    path环境变量里新增%MAVEN_HOME%\bin


    检验安装成功


    groupId:项目包名
    artifactId:模块名
    version:版本 (0.0.1-SNAPSHOT)

    maven项目结构如下表示:


    按照该项目结构不用编译器手动搭建一个maven项目
    注意version格式为:*-SNAPSHOT不然报错

    mvn compile :编译。如果第一次会下载很多jar 编译生成target文件



    mvn test: 运行测试文件
    mvn package:打包成jar


    mvn clean 删除target文件(里面包含编译生成的字节码文件和测试报告)
    install 安装jar包到本地仓库中

    maven提供了archetype插件,用于创建符合maven规定的目录骨架。
    mvn archetype


    image.png

    maven compile 生成classes文件
    maven test 生成test-classes文件
    install jar包部署到本地仓库
    依赖树mvn dependency:tree
    打包时候过滤test: mvn clean package- Pdev -Dmaven.test.skip=true
    mvn help:effective-pom 查看父pom
    maven生命周期: 预定义
    clean lifcycle
    default lifecycle
    site lifecycle

    clean lifecycle: Pre-clean,Clean,Post-clean. 执行某个指令时,也会执行之前的指令。避免重复。(mvn pre-clean,mvn clean,mvn post-clean)

    default lifcycle: 1.pre-resouces 2.compile 3.test-compile 4.test 5.package 6.install 7.deploy
    mvn process-resouces 资源准备:复制资源到target目录下
    mvn test-compile 跳过源代码只编译test文件
    mvn test

    maven是使用surefire插件执行测试的,它按照指定格式的类名来查找匹配的测试类,
    默认包含的测试类:
    **/*Test.java
    **/Test*.java
    **/*TestCase.java
    默认排除的测试类:
    **/Abstract*Test.java
    **/Abstract*TestCase.java

    mvn package
    mvn install 我的部署到/home/icecrea/.m2/repository/com/qunar/mavendemo/1.0-SNAPSHOT/mavendemo-1.0-SNAPSHOT.pom

    site lifecycle:pre-site site post-site site-deploy

    项目打包名称:finalname
    选择相应环境 : profie

    仓库的布局:根据依赖的坐标进行管理。groupId/artifactId/version/artifactId-version.packing
    比如我的项目打包后在 ~/.m2/repository/com/qunar/mavendemo/1.0-SNAPSHOT/mavendemo-1.0-SNAPSHOT.jar 就是组名/项目名/版本/对应jar包 可以供别的项目引用
    不稳定版本snapshot 稳定版本 release
    依赖:
    type:默认为jar
    scope:依赖范围
    compile:默认
    test:测试依赖范围 不会打包
    provided:已提供依赖范围
    runtime:运行时依赖范围 
    optional:依赖是否可选
    exclusions:排除传递依赖
    依赖特性:
    1.路经优先 2.声明优先:路经长度相同,谁先声明加载谁。
    解决:1.使用<dependencyManagement> 2.<exclusions><exclusion><artifactId><groupId>排除该依赖
    依赖归类:归类到properties
    聚合:使用一个命令构建多个模块
    1.把父工程的package改成pom<packing>
    2.把子工程的module元素引入<modules><module>
    继承:
    <parent>
    项目可以不指定groupid和version,自动继承父工程的。不能不指定artifactid

    相关文章

      网友评论

          本文标题:Maven总结

          本文链接:https://www.haomeiwen.com/subject/psdnmxtx.html