Maven基础-依赖基础和生命周期以及插件

  • Post author:
  • Post category:其他




Maven依赖



依赖配置

<dependencies>
    
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
   <!--...-->
</dependencies>
  • 依赖传递

    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

对于

Maven

项目,可能会出现不同版本的依赖,这种情况叫做

依赖传递冲突问题



依赖传递冲突问题


  • 路径优先

    :当依赖中出现相同的资源时,层级越深,优先级越低,

    层级越浅,优先级越高

  • 声明优先

    :当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

  • 特殊优先

    :当同级配置了相同资源的不同版本,后配置的覆盖先配置的



可选依赖

对外隐藏当前所依赖的资源

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <optional>true</optional>
</dependency>



排除依赖

主动断开依赖的资源,被排除的资源无需指定版本

 <dependency>
     <groupId>com.itheima</groupId>
     <artifactId>project03</artifactId>
     <version>1.0-SNAPSHOT</version>
     
     <exclusions>
         <exclusion>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
         </exclusion>
     </exclusions>
</dependency>



依赖范围

依赖的

jar

默认情况可以在任何地方使用,可以通过

scope

标签设定作用范围

作用范围

  • 主程序范围有限

    main

    文件夹范围内
  • 测试程序范围有效

    test

    文件夹范围内
  • 是否参与打包

    package

    指令范围内

在这里插入图片描述



依赖范围传递性

带有传递范围的资源在进行传递时,作用范围将受到影响

在这里插入图片描述



生命周期与插件



项目构建生命周期


Maven

构建生命周期描述的是一次构建过程经历的时间


compile

->

test-compile

->

package

->

install


Maven

对项目构建的生命周期划分为3套


  • clean

    :清理工作


    • pre-clean

      :执行一些需要在

      clean

      之前完成的工作

    • clean

      :移除所有上一次构建完成的文件

    • post-clean

      :执行一些需要在

      clean

      之后立刻完成的工作

  • default

    :核心工作,例如编译、测试、打包、部署等

    • 如果执行

      compile

      ,那么包括

      compile

      之前的命令都会执行

在这里插入图片描述


  • site

    :产生报告,发布站点等


    • pre-site

      :执行一些需要生成站点文档之前完成的工作

    • site

      :生成项目的站点文档

    • post-site

      :执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

    • site-deploy

      :将生成的站点文档部署都特定的服务器上

生命周期控制的是在执行任务的过程,每个过程对应一个插件



插件

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认

    maven

    在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>
                        </goals>
                        <phase>generate-test-resources</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在这里插入图片描述



版权声明:本文为qq_36178962原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。