Java开发那些事Java学习笔记Java 杂谈

Maven知识点速查

2018-03-13  本文已影响75人  林檎果

本文是学习项目管理利器——maven的Maven知识点速查

前置知识:无

Maven常用命令

Maven命令行创建目录骨架

Maven中的坐标和仓库

Maven生命周期和插件

生命周期:是一种工程的抽象

<build>
    <plugins>
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>xxx</version>
        <executions>
            <phase>package</phase> <!-- 生命周期那个阶段 -->
            <goals>
                <goal>jar-no-fork</goal><!--做什么事-->
            </goals>
        </executions>
    </plugins>
</build>

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion> <!--固定搭配 -->
    <groupId>反写的公司网址+项目名</groupId>   <!-- 坐标 -->
    <artifactId>项目名+模块名(项目中的一个模块)</artifactId>
    <packaging>jar</packaging> <!-- 打包,jar、war、zip、pom -->
    <version>1.0-SNAPSHOT</version>
    <!-- 0.x.x 表示大版本
    x.0.x 分支版本
    x.x.0 小版本
    0.0.1snapshot 快照 
    alpha 内测
    beta 公测
    release 稳定
    GA 正式发布 -->
    
    <name></name> <!--文档用-->
    <url></url> <!-- 项目地址 -->
    <description></description>
    <developers></developers>
    <lincences></lincences>
    <organization></organization>
    
    
    <denpendencies>
        <denpendency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
            <type></type>
            <scope>test</scope>
            <optional></optional> <!-- 设置依赖是否可选 -->
            <exclusions><!-- 排除依赖,比如A->B->C,而A不想依赖C -->
                <exclusion>
                </exclusion>
            </exclusions>
        </denpendency>
    </denpendencies>
    
    <!-- 依赖管理,用在父模块中供继承用, -->
    <dependencyManagement>
        <denpendencies>
            <dependency></dependency>
        </denpendencies>
    </dependencyManagement>
    
    <build>
        <!-- 插件列表 -->
        <plugins>
            <plugin>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
            </plugin>
        </plugins>
    </build>
    
    <!-- 继承 -->
    <parent></parent>
    <!-- 模块 -->
    <modules>
        <module>
        </module>
    </modules>

Maven依赖范围

<scope>test</scope>

  1. compile 默认编译和运行都有效
  2. test 测试
  3. runtime 运行和测试时有效
  4. provided 编译和测试有效
  5. import 只用在dependencyManagement中,表示从其他pom导入dependency的配置

Maven依赖传递

A->B->C,则A间接依赖C,A中会引入C的jar包,可以排除依赖用<exclusion></exclusion>,则C不见了

Maven依赖冲突,则看规则

  1. 短路优先
    • A->B->C-X(jar) 不选这条
    • A->D->X(jar) ✅
  2. 先声明先优先:如果路径长度相同,则谁先声明,先解析谁

Maven的聚合和继承

聚合:<modules></modules>
继承:<parent></parent>

Maven的构建web项目

在<plugin>里使用坐标标记的jetty或tomcat插件

关于我:

linxinzhe,全栈工程师,目前供职于某500强通信企业。人工智能,区块链爱好者。

GitHub:https://github.com/linxinzhe

欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!

上一篇下一篇

猜你喜欢

热点阅读