首页 > 其他分享 >Maven5 - 依赖范围

Maven5 - 依赖范围

时间:2023-02-04 11:25:36浏览次数:43  
标签:compile 依赖 jar Calculator Maven5 maven test import 范围

测试依赖的范围

依赖范围

标签的位置:dependencies/dependency/scope

标签的可选值:compile/test/provided/system/runtime/import

compile 和 test 对比

main目录(空间) test目录(空间) 开发过程(时间) 部署到服务器(时间)
compile 有效 有效 有效 有效
test 无效 有效 有效 无效

compile 和 provided 对比

main目录(空间) test目录(空间) 开发过程(时间) 部署到服务器(时间)
compile 有效 有效 有效 有效
provided 有效 有效 有效 无效

结论

compile:通常使用的第三方框架的 jar 包这样在项目实际运行时真正要用到的 jar 包都是以 compile 范围进行依赖的。比如 SSM 框架所需jar包。

test:测试过程中使用的 jar 包,以 test 范围依赖进来。比如 junit。

provided:在开发过程中需要用到的“服务器上的 jar 包”通常以 provided 范围依赖进来。比如 servlet-api、jsp-api。而这个范围的 jar 包之所以不参与部署、不放进 war 包,就是避免和服务器上已有的同类 jar 包产生冲突,同时减轻服务器的负担。说白了就是:“服务器上已经有了,你就别带啦!

测试

验证 compile 范围对 main 目录有效

TIP

main目录下的类:HelloServlet 使用compile范围导入的依赖:pro01-atguigu-maven

验证:使用compile范围导入的依赖对main目录下的类来说是有效的

有效:HelloServlet 能够使用 pro01-atguigu-maven 工程中的 Calculator 类

验证方式:在 HelloServlet 类中导入 Calculator 类,然后编译就说明有效。

验证test范围对main目录无效

测试方式:在主体程序中导入org.junit.Test这个注解,然后执行编译。

具体操作:在pro01-maven-java\src\main\java\com\atguigu\maven目录下修改Calculator.java

package com.atguigu.maven;

import org.junit.Test;

public class Calculator {
	
	public int sum(int i, int j){
		return i + j;
	}
	
}

执行Maven编译命令:

[ERROR] /D:/maven-workspace/space201026/pro01-maven-java/src/main/java/com/atguigu/maven/Calculator.java:[3,17] 程序包org.junit不存在

验证test和provided范围不参与服务器部署

其实就是验证:通过compile范围依赖的jar包会放入war包,通过test范围依赖的jar包不会放入war包。

./images

验证provided范围对测试程序有效

测试方式是在pro02-maven-web的测试程序中加入servlet-api.jar包中的类。

修改:pro02-maven-web\src*test**\java\com\atguigu\maven*CalculatorTest.java**

package com.atguigu.maven;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

import org.junit.Test;
import com.atguigu.maven.Calculator;

// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;

public class CalculatorTest{
	
	@Test
	public void testSum(){
		
		// 1.创建Calculator对象
		Calculator calculator = new Calculator();
		
		// 2.调用Calculator对象的方法,获取到程序运行实际的结果
		int actualResult = calculator.sum(5, 3);
		
		// 3.声明一个变量,表示程序运行期待的结果
		int expectedResult = 8;
		
		// 4.使用断言来判断实际结果和期待结果是否一致
		// 如果一致:测试通过,不会抛出异常
		// 如果不一致:抛出异常,测试失败
		assertEquals(expectedResult, actualResult);
		
	}
	
}

然后运行Maven的编译命令:mvn compile

然后看到编译成功。

标签:compile,依赖,jar,Calculator,Maven5,maven,test,import,范围
From: https://www.cnblogs.com/Ashen-/p/17091117.html

相关文章

  • Spring6 DI 依赖注入--Bean属性赋值
    Spring6基于XML实现Bean管理(属性赋值)IOC和DI有什么区别:DI是IOC中的具体实现,DI表示依赖注入或注入属性,注入属性要在创建对象的基础之上完成依赖注入方法bean属性赋值方......
  • 无需依赖Docker环境制作镜像
    随着高版本的Kubernetes弃用Docker,企业也可以不依赖Docker环境了,但是DevOps通过Kubernetes部署的话,仍然需要制作镜像,那么在没有Docker环境的情况下如何制作呢?推荐一款谷歌......
  • 青龙面板安装依赖
    安装方法如图nodejs依赖crypto-jsprettytabledotenvjsdomdate-fnstough-cookietslibws@7.4.3ts-md5jsdom-gjiebafsform-datajson5global-agentpng-js@types/noderequir......
  • 关于服务发现、Feign、Zuul 以及docker之间的依赖
    Consul和Eureka都是用来解决服务发现(就是类似DNS服务)。Eureka在应用主类中通过加上​​@EnableDiscoveryClient​​,该注解能激活Eureka中的DiscoveryClient。(微服务中......
  • 有依赖的背包问题
    题目连接:https://www.acwing.com/problem/content/10/简单来说就是在子节点和父节点有制约条件下选择物品来取得最大值  其实可以这样想:将子树按照体积划分为0~m份,......
  • 函数计算|如何使用层解决依赖包问题?
    在使用阿里云函数计算平台时,如果您曾经遇到过以下问题,本文应该会对您有所帮助:第三方依赖包太大,每次更新代码都非常耗时,甚至会出现超过代码包限制的情况,我该怎么办?安装第三方......
  • 求随机数的位数(随机数是十进制的数) 先给定了随机数的范围
    1packagecom.fqs.demo;23importjava.util.Random;456publicclassJiWei{7publicstaticvoidmain(String[]args){8//随机数给......
  • Shell获取上一个月、星期的时间范围
    #!/bin/bashdate_today=`date-d'1dayago'+%Y%m%d`#最近7天date_befor_7day=`date-d'7dayago'+%Y%m%d`#上一个完整周(周一到周日)OFDAY="`date"+%u"`"STEPOFD......
  • maven的依赖管理dependencyManagement标签
    依赖管理(dependencyManagement)此标签仅针对依赖管理,但是实际不引入,避免子项目中引入过多 maven提供的dependencyManagement元素既能让子项目继承到父项目的依赖配置,......
  • Junit5 pom依赖
     <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.2</ve......