深圳知名网站,学网站开发的软件,宁波网站建设托管,网站建设案例公司目录 Maven课程内容1. Maven初识1.1 什么是Maven?1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Maven仓库2.4 Maven安装2.4.1 下载2.4.2 安装步骤 3. IDEA集成Maven3.1 配置Maven环境3.1.2 全局设置 3.2 Maven项… 目录 Maven课程内容1. Maven初识1.1 什么是Maven?1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Maven仓库2.4 Maven安装2.4.1 下载2.4.2 安装步骤 3. IDEA集成Maven3.1 配置Maven环境3.1.2 全局设置 3.2 Maven项目3.2.1 创建Maven项目3.2.2 POM配置详解3.2.3 Maven坐标详解 3.3 导入Maven项目 4. 依赖管理4.1 依赖配置4.2 依赖传递4.2.1 依赖具有传递性4.2.2 排除依赖 4.3 生命周期4.3.1 介绍4.3.2 执行 5. 单元测试5.1 介绍5.2 Junit快速入门5.2.1 单元测试5.2.2 入门程序 5.3 常见注解5.4 断言5.5 依赖范围 6. Maven常见问题 Maven
课程内容
初识MavenMaven概述 Maven模型介绍Maven仓库介绍Maven安装与配置 IDEA集成Maven依赖管理单元测试
1. Maven初识
1.1 什么是Maven? Maven 是一款用于管理和构建Java项目的工具是Apache旗下的一个开源项目 。 Apache 软件基金会成立于1999年7月是目前世界上最大的最受欢迎的开源软件基金会也是一个专门为支持开源项目而生的非盈利性组织。 开源项目https://www.apache.org/index.html#projects-list 那我们之前在JavaSE阶段没有使用Maven依然可以构建Java项目。 我们为什么现在还要学习Maven呢 ? 那接下来我们就来聊聊Maven的作用。
1.2 Maven的作用 1.2.1 依赖管理
方便快捷的管理项目依赖的资源(jar包)避免版本冲突问题。
1). 使用maven前
我们项目中要想使用某一个jar包就需要把这个jar包从官方网站下载下来然后再导入到项目中。然后在这个项目中就可以使用这个jar包了。 2). 使用maven后
当使用maven进行项目依赖(jar包)管理则很方便的可以解决这个问题。 我们只需要在maven项目的pom.xml文件中添加一段如下图所示的配置即可实现。
在maven项目的配置文件中加入上面这么一段配置信息之后maven会自动的根据配置信息的描述去下载对应的依赖。 然后在项目中就可以直接使用了。
1.2.2 项目构建
Maven还提供了标准化的跨平台的自动化构建方式。
如上图所示我们开发了一套系统代码需要进行编译、测试、打包、发布等过程这些操作是所有项目中都需要做的如果需要反复进行就显得特别麻烦而Maven提供了一套简单的命令来完成项目构建。 通过Maven中的命令就可以很方便的完成项目的编译(compile)、测试(test)、打包(package)、发布(deploy) 等操作。
而且这些操作都是跨平台的也就是说无论你是Windows系统还是Linux系统还是Mac系统这些命令都是支持的。
1.2.3 统一项目结构
Maven 还提供了标准、统一的项目结构 。
1). 未使用Maven
由于java的开发工具呢有很多除了大家熟悉的IDEA以外还有像早期的Eclipse、MyEclipse。而不同的开发工具创建出来的java项目的目录结构是存在差异的那这就会出现一个问题。
Eclipse创建的java项目并不能直接导入IDEA中。 IDEA创建的java项目也没有办法直接导入到Eclipse中。 2). 使用Maven
而如果我们使用了Maven这一款项目构建工具它给我们提供了一套标准的java项目目录。如下所示 也就意味着无论我们使用的是什么开发工具只要是基于maven构建的java项目最终的目录结构都是相同的如图所示。 那这样呢我们使用Eclipse、MyEclipse、IDEA创建的maven项目就可以在各个开发工具直接直接导入使用了更加方便、快捷。 而在上面的maven项目的目录结构中main目录下存放的是项目的源代码test目录下存放的是项目的测试代码。 而无论是在main还是在test下都有两个目录一个是java用来存放源代码文件另一个是resources用来存放配置文件。
最后呢一句话总结一下什么是Maven。 Maven就是一款管理和构建java项目的工具。
Maven的内容分为两个部分Maven核心和Maven进阶。我们先来讲解Maven核心部分的内容在Web开发的最后再来讲解Maven进阶部分的内容。
2. Maven概述
2.1 Maven介绍
Apache Maven是一个项目管理和构建工具它基于项目对象模型(Project Object Model , 简称: POM)的概念通过一小段描述信息来管理项目的构建、报告和文档。
官网https://maven.apache.org/
Maven的作用
方便的依赖管理统一的项目结构标准的项目构建流程
2.2 Maven模型
项目对象模型 (Project Object Model)依赖管理模型(Dependency)构建生命周期/阶段(Build lifecycle phases)
1). 构建生命周期/阶段(Build lifecycle phases) 以上图中紫色框起来的部分就是用来完成标准化构建流程 。当我们需要编译Maven提供了一个编译插件供我们使用当我们需要打包Maven就提供了一个打包插件供我们使用等。
2). 项目对象模型 (Project Object Model) 以上图中紫色框起来的部分属于项目对象模型就是将我们自己的项目抽象成一个对象模型有自己专属的坐标如下图所示是一个Maven项目 坐标就是资源(jar包)的唯一标识通过坐标可以定位到所需资源(jar包)位置 3). 依赖管理模型(Dependency) 以上图中紫色框起来的部分属于依赖管理模型是使用坐标来描述当前项目依赖哪些第三方jar包 之前我们项目中需要jar包时直接就把jar包复制到项目下的lib目录而现在书写在pom.xml文件中的坐标又是怎么能找到所要的jar包文件的呢 答案Maven仓库 2.3 Maven仓库
仓库用于存储资源管理各种jar包 仓库的本质就是一个目录(文件夹)这个目录被用来存储开发中所有依赖(就是jar包)和插件 Maven仓库分为
本地仓库自己计算机上的一个目录(用来存储jar包)中央仓库由Maven团队维护的全球唯一的。仓库地址https://repo1.maven.org/maven2/远程仓库(私服)一般由公司团队搭建的私有仓库 当项目中使用坐标引入对应依赖jar包后首先会查找本地仓库中是否有对应的jar包 如果有则在项目直接引用 如果没有则去中央仓库中下载对应的jar包到本地仓库
如果还可以搭建远程仓库(私服)将来jar包的查找顺序则变为 本地仓库 -- 远程仓库– 中央仓库
2.4 Maven安装
认识了Maven后我们就要开始使用Maven了那么首先我们要进行Maven的下载与安装。
2.4.1 下载
下载地址https://maven.apache.org/download.cgi 2.4.2 安装步骤
Maven安装配置步骤
解压安装配置仓库配置阿里云私服配置Maven环境变量
1). 解压 apache-maven-3.9.4-bin.zip解压即安装 建议解压到没有中文、特殊字符的路径下。如课程中解压到 E:\develop 下。 解压缩后的目录结构如下 bin目录 存放的是可执行命令。mvn 命令重点关注conf目录 存放Maven的配置文件。settings.xml配置文件后期需要修改lib目录 存放Maven依赖的jar包。Maven也是使用java开发的所以它也依赖其他的jar包
2). 配置本地仓库
2.1)、在自己计算机上新一个目录本地仓库用来存储jar包 2.2)、进入到conf目录下修改settings.xml配置文件
1). 使用超级记事本软件打开settings.xml文件定位到53行
2). 复制localRepository标签粘贴到注释的外面55行
3). 复制之前新建的用来存储jar包的路径替换掉localRepository标签体内容 3). 配置阿里云私服
由于中央仓库在国外所以下载jar包速度可能比较慢而阿里公司提供了一个远程仓库里面基本也都有开源项目的jar包。
进入到conf目录下修改settings.xml配置文件
1). 使用超级记事本软件打开settings.xml文件定位到160行左右
2). 在mirrors标签下为其添加子标签mirror内容如下
mirror idalimaven/id namealiyun maven/name urlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf
/mirror注意配置的位置在mirrors ... /mirrors 中间添加配置。如下图所示 4). 配置maven项目的JDK版本。
需要在 settings.xml 中配置JDK的版本为17 。(自己所需、看自己的版本)
注意配置的位置在profiles ... /profiles 中间添加配置。如下图所示 profileidjdk-17/idactivationactiveByDefaulttrue/activeByDefaultjdk17/jdk/activationpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetmaven.compiler.compilerVersion17/maven.compiler.compilerVersion/properties/profile 5). 配置环境变量 Maven环境变量的配置类似于JDK环境变量配置一样 1). 在系统变量处新建一个变量MAVEN_HOME
MAVEN_HOME环境变量的值设置为maven的解压安装目录
2). 在Path中进行配置
PATH环境变量的值设置为%MAVEN_HOME%\bin
3). 打开DOS命令提示符进行验证出现如图所示表示安装成功
mvn -v3. IDEA集成Maven
我们要想在IDEA中使用Maven进行项目构建就需要在IDEA中集成Maven
3.1 配置Maven环境
3.1.2 全局设置
1、进入到IDEA欢迎页面
选择 IDEA中 File close project
2、打开 All settings , 选择 Build,Execution,Deployment Build Tools Maven
3、配置工程的编译版本为17
这里所设置的maven的环境信息并未指定任何一个project此时设置的信息就属于全局配置信息。 以后我们再创建project默认就是使用我们全局配置的信息。
3.2 Maven项目
3.2.1 创建Maven项目
1、创建一个空项目 2、创建模块选择Java语言选择Maven。 填写模块的基本信息 4、在Maven工程下创建HelloWorld类 Maven项目的目录结构:
maven-project01 src (源代码目录和测试代码目录) main (源代码目录) java (源代码java文件目录)esources (源代码配置文件目录) test (测试代码目录) ava (测试代码java目录)resources (测试代码配置文件目录) arget (编译、打包生成文件存放目录)
5、编写 HelloWorld并运行
public class HelloWorld {public static void main(String[] args) {System.out.println(Hello Maven ...);}
}3.2.2 POM配置详解
POM (Project Object Model) 指的是项目对象模型用来描述当前的maven项目。
使用pom.xml文件来实现
pom.xml文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd!-- POM模型版本 --modelVersion4.0.0/modelVersion!-- 当前项目坐标 --groupIdcom.itheima/groupIdartifactIdmaven_project1/artifactIdversion1.0-SNAPSHOT/version!-- 打包方式 --packagingjar/packaging/projectpom文件详解
project pom文件的根标签表示当前maven项目modelVersion 声明项目描述遵循哪一个POM模型版本 虽然模型本身的版本很少改变但它仍然是必不可少的。目前POM模型版本是4.0.0 坐标 groupId、artifactId、version 定位项目在本地仓库中的位置由以上三个标签组成一个坐标 packaging maven项目的打包方式通常设置为jar或war默认值jar
3.2.3 Maven坐标详解
什么是坐标
Maven中的坐标是资源的唯一标识 , 通过该坐标可以唯一定位资源位置使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成
groupId定义当前Maven项目隶属组织名称通常是域名反写例如com.itheimaartifactId定义当前Maven项目名称通常是模块名称例如 order-service、goods-serviceversion定义当前项目版本号 SNAPSHOT: 功能不稳定、尚处于开发中的版本即快照版本RELEASE: 功能趋于稳定、当前更新停止可以用于发行的版本
如下图就是使用坐标表示一个项目 注意 上面所说的资源可以是插件、依赖、当前项目。我们的项目如果被其他的项目依赖时也是需要坐标来引入的。 3.3 导入Maven项目
方式1
打开IDEA选择 File - Project Structure - Modules - Import Module - 选择maven项目的pom.xml 说明如果没有Maven面板选择 View Appearance Tool Window Bars 方式2
Maven面板 - Add Maven Projects - 选择maven项目的pom.xml 4. 依赖管理
4.1 依赖配置
依赖指当前项目运行所需要的jar包。一个项目中可以引入多个依赖
例如在当前工程中我们需要用到logback来记录日志此时就可以在maven工程的pom.xml文件中引入logback的依赖。具体步骤如下
在pom.xml中编写dependencies标签在dependencies标签中使用dependency引入坐标定义坐标的 groupId、artifactId、version
dependencies!-- 依赖 : commons-io --dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.11.0/version/dependency
/dependencies点击刷新按钮引入最新加入的坐标 刷新依赖保证每一次引入新的依赖或者修改现有的依赖配置都可以加入最新的坐标 注意事项 如果引入的依赖在本地仓库中不存在将会连接远程仓库 / 中央仓库然后下载依赖这个过程会比较耗时耐心等待如果不知道依赖的坐标信息可以到mvn的中央仓库https://mvnrepository.com/中搜索 添加依赖的几种方式
利用中央仓库搜索的依赖坐标 利用IDEA工具搜索依赖 熟练上手maven后快速导入依赖
4.2 依赖传递
4.2.1 依赖具有传递性
早期我们没有使用maven时向项目中添加依赖的jar包需要把所有的jar包都复制到项目工程下。如下图所示需要logback-classic时由于logback-classic又依赖了logback-core和slf4j所以必须把这3个jar包全部复制到项目工程下 我们现在使用了maven当项目中需要使用logback-classic时只需要在pom.xml配置文件中添加logback-classic的依赖坐标即可。 在pom.xml文件中只添加了logback-classic依赖但由于maven的依赖具有传递性所以会自动把所依赖的其他jar包也一起导入。
依赖传递可以分为 直接依赖在当前项目中通过依赖配置建立的依赖关系 间接依赖被依赖的资源如果依赖其他资源当前项目间接依赖其他资源 比如以上图中
projectA依赖了projectB。对于projectA 来说projectB 就是直接依赖 。而projectB依赖了projectC及其他jar包。 那么此时在projectA中也会将projectC的依赖传递下来 。对于projectA 来说projectC就是间接依赖。 4.2.2 排除依赖
问题之前我们讲了依赖具有传递性。那么A依赖BB依赖C如果A不想将C依赖进来是否可以做到
答案在maven项目中我们可以通过排除依赖来实现。
什么是排除依赖
排除依赖指主动断开依赖的资源。被排除的资源无需指定版本
dependencygroupIdcom.itheima/groupIdartifactIdmaven-projectB/artifactIdversion1.0-SNAPSHOT/version!--排除依赖, 主动断开依赖的资源--exclusionsexclusiongroupIdjunit/groupIdartifactIdjunit/artifactId/exclusion/exclusions
/dependency依赖排除示例
maven-projectA依赖了maven-projectBmaven-projectB依赖了Junit。基于依赖的传递性所以maven-projectA也依赖了Junit 使用排除依赖后 4.3 生命周期
4.3.1 介绍
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。 描述了一次项目构建经历哪些阶段。
在Maven出现之前项目构建的生命周期就已经存在软件开发人员每天都在对项目进行清理编译测试及部署。虽然大家都在不停地做构建工作但公司和公司间、项目和项目间往往使用不同的方式做类似的工作。
Maven从大量项目和构建工具中学习和反思然后总结了一套高度完美的易扩展的项目构建生命周期。这个生命周期包含了项目的清理初始化编译测试打包集成测试验证部署和站点生成等几乎所有构建步骤。
Maven对项目构建的生命周期划分为3套相互独立 clean清理工作。 default核心工作。如编译、测试、打包、安装、部署等。 site生成报告、发布站点等。
三套生命周期又包含哪些具体的阶段呢, 我们来看下面这幅图: 我们看到这三套生命周期里面有很多很多的阶段这么多生命周期阶段其实我们常用的并不多主要关注以下几个
• clean移除上一次构建生成的文件
• compile编译项目源代码
• test使用合适的单元测试框架运行测试(junit)
• package将编译后的文件打包如jar、war等
• install安装项目到本地仓库
Maven的生命周期是抽象的这意味着生命周期本身不做任何实际工作。在Maven的设计中实际任务如源代码编译都交由插件来完成。 IDEA工具为了方便程序员使用maven生命周期在右侧的maven工具栏中已给出快速访问通道 生命周期的顺序是clean -- validate -- compile -- test -- package -- verify -- install -- site -- deploy
我们需要关注的就是clean -- compile -- test -- package -- install 说明在同一套生命周期中我们在执行后面的生命周期时前面的生命周期都会执行。 思考当运行package生命周期时clean、compile生命周期会不会运行 clean不会运行compile会运行。 因为compile与package属于同一套生命周期而clean与package不属于同一套生命周期。 4.3.2 执行
在日常开发中当我们要执行指定的生命周期时有两种执行方式
在idea工具右侧的maven工具栏中选择对应的生命周期双击执行在DOS命令行中通过maven命令执行
方式一在idea中执行生命周期
选择对应的生命周期双击执行 compile test package … …
方式二在命令行中执行生命周期
进入到DOS命令行 5. 单元测试
5.1 介绍 **测试**是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。 **阶段划分**单元测试、集成测试、系统测试、验收测试。 1). 单元测试
介绍对软件的基本组成单位进行测试最小测试单位。
目的检验软件基本组成单位的正确性。
测试人员开发人员
2). 集成测试
介绍将已分别通过测试的单元按设计要求组合成系统或子系统再进行的测试。
目的检查单元之间的协作是否正确。
测试人员开发人员
3). 系统测试
介绍对已经集成好的软件系统进行彻底的测试。
目的验证软件系统的正确性、性能是否满足指定的要求。
测试人员测试人员
4). 验收测试
介绍交付测试是针对用户需求、业务流程进行的正式的测试。
目的验证软件系统是否满足验收标准。
测试人员客户/需求方
**测试方法**白盒测试、黑盒测试 及 灰盒测试。 1). 白盒测试
清楚软件内部结构、代码逻辑。
用于验证代码、逻辑正确性。
2). 黑盒测试
不清楚软件内部结构、代码逻辑。
用于验证软件的功能、兼容性、验收测试等方面。
3). 灰盒测试
结合了白盒测试和黑盒测试的特点既关注软件的内部结构又考虑外部表现功能。 5.2 Junit快速入门
5.2.1 单元测试 单元测试就是针对最小的功能单元(方法)编写测试代码对其正确性进行测试。 JUnit最流行的Java测试框架之一提供了一些功能方便程序进行单元测试第三方公司提供。
在之前的课程中我们进行程序的测试 都是main方法中进行测试 。如下图所示 通过main方法是可以进行测试的可以测试程序是否正常运行。但是main方法进行测试时会存在如下问题
测试代码与源代码未分开难维护。一个方法测试失败影响后面方法。无法自动化测试得到测试报告。
而如果我们使用了JUnit单元测试框架进行测试将会有以下优势
测试代码与源代码分开便于维护。可根据需要进行自动化测试。可自动分析测试结果产出测试报告。
5.2.2 入门程序
需求使用JUnit对UserService中的业务方法进行单元测试测试其正确性。 在pom.xml中引入JUnit的依赖。 !--Junit单元测试依赖--
dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.9.1/versionscopetest/scope
/dependency在test/java目录下创建测试类并编写对应的测试方法并在方法上声明Test注解。 Test
public void testGetAge(){Integer age new UserService().getAge(110002200505091218);System.out.println(age);
}运行单元测试 (测试通过绿色测试失败红色)。 测试通过显示绿色
测试失败显示红色 注意 测试类的命名规范为XxxxTest测试方法的命名规范为public void xxx(){…} 5.3 常见注解
在JUnit中还提供了一些注解还增强其功能常见的注解有以下几个
注解说明备注Test测试类中的方法用它修饰才能成为测试方法才能启动执行单元测试BeforeEach用来修饰一个实例方法该方法会在每一个测试方法执行之前执行一次。初始化资源(准备工作)AfterEach用来修饰一个实例方法该方法会在每一个测试方法执行之后执行一次。释放资源(清理工作)BeforeAll用来修饰一个静态方法该方法会在所有测试方法之前只执行一次。初始化资源(准备工作)AfterAll用来修饰一个静态方法该方法会在所有测试方法之后只执行一次。释放资源(清理工作)ParameterizedTest参数化测试的注解 (可以让单个测试运行多次每次运行时仅参数不同)用了该注解就不需要Test注解了ValueSource参数化测试的参数来源赋予测试方法参数与参数化测试注解配合使用DisplayName指定测试类、测试方法显示的名称 默认为类名、方法名
演示 BeforeEachAfterEachBeforeAllAfterAll 注解
public class UserServiceTest {BeforeEachpublic void testBefore(){System.out.println(before...);}AfterEachpublic void testAfter(){System.out.println(after...);}BeforeAll //该方法必须被static修饰public static void testBeforeAll(){ System.out.println(before all ...);}AfterAll //该方法必须被static修饰public static void testAfterAll(){System.out.println(after all...);}Testpublic void testGetAge(){Integer age new UserService().getAge(110002200505091218);System.out.println(age);}Testpublic void testGetGender(){String gender new UserService().getGender(612429198904201611);System.out.println(gender);}} 输出结果如下 演示 ParameterizedTest ValueSource DisplayName 注解
package com.itheima;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;DisplayName(测试-学生业务操作)
public class UserServiceTest {DisplayName(测试-获取年龄)Testpublic void testGetAge(){Integer age new UserService().getAge(110002200505091218);System.out.println(age);}DisplayName(测试-获取性别)Testpublic void testGetGender(){String gender new UserService().getGender(612429198904201611);System.out.println(gender);}DisplayName(测试-获取性别3)ParameterizedTestValueSource(strings {612429198904201611,612429198904201631,612429198904201626})public void testGetGender3(String idcard){String gender new UserService().getGender(idcard);System.out.println(gender);}
}输出结果如下 5.4 断言
JUnit提供了一些辅助方法用来帮我们确定被测试的方法是否按照预期的效果正常工作这种方式称为断言。
断言方法描述assertEquals(Object exp, Object act, String msg)检查两个值是否相等不相等就报错。assertNotEquals(Object unexp, Object act, String msg)检查两个值是否不相等相等就报错。assertNull(Object act, String msg)检查对象是否为null不为null就报错。assertNotNull(Object act, String msg)检查对象是否不为null为null就报错。assertTrue(boolean condition, String msg)检查条件是否为true不为true就报错。assertFalse(boolean condition, String msg)检查条件是否为false不为false就报错。assertSame(Object exp, Object act, String msg)检查两个对象引用是否相等不相等就报错。
示例演示
package com.itheima;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;DisplayName(测试-学生业务操作)
public class UserServiceTest {DisplayName(测试-获取年龄2)Testpublic void testGetAge2(){Integer age new UserService().getAge(110002200505091218);Assertions.assertNotEquals(18, age, 两个值相等);
// String s1 new String(Hello);
// String s2 Hello;
// Assertions.assertSame(s1, s2, 不是同一个对象引用);}DisplayName(测试-获取性别2)Testpublic void testGetGender2(){String gender new UserService().getGender(612429198904201611);Assertions.assertEquals(男, gender);}DisplayName(测试-获取性别3)ParameterizedTestValueSource(strings {612429198904201611,612429198904201631,612429198904201626})public void testGetGender3(String idcard){String gender new UserService().getGender(idcard);Assertions.assertEquals(男, gender);}
}
测试结果输出 5.5 依赖范围
依赖的jar包默认情况下可以在任何地方使用。 在maven中如果希望限制依赖的使用范围可以通过 scope…/scope 设置其作用范围。 作用范围
主程序范围有效。main文件夹范围内测试程序范围有效。test文件夹范围内是否参与打包运行。package指令范围内
可以在pom.xml中配置 scope/scope 属性来控制依赖范围。 如果对Junit单元测试的依赖设置了scope为 test就代表该依赖只是在测试程序中可以使用在主程序中是无法使用的。所以我们会看到如下现象 如上图所示给junit依赖通过scope标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境其他环境下不能使用。
scope的取值常见的如下
scope****值主程序测试程序打包运行范例compile默认YYYlog4jtest-Y-junitprovidedYY-servlet-apiruntime-YYjdbc驱动
6. Maven常见问题 问题现象Maven项目中添加的依赖未正确下载造成右侧Maven面板中的依赖报红再次reload重新加载也不会再下载。 产生原因由于网络原因依赖没有下载完整导致的在maven仓库中生成了xxx.lastUpdated文件该文件不删除不会再重新下载。 解决方案 根据maven依赖的坐标找到仓库中对应的 xxx.lastUpdated 文件删除删除之后重新加载项目即可。通过命令 (del /s *.lastUpdated) 批量递归删除指定目录下的 xxx.lastUpdated 文件删除之后重新加载项目即可。重新加载依赖依赖下载了之后maven面板可能还会报红此时可以关闭IDEA重新打开IDEA加载此项目即可。 文章转载自: http://www.morning.psyrz.cn.gov.cn.psyrz.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn http://www.morning.qbjrl.cn.gov.cn.qbjrl.cn http://www.morning.ptdzm.cn.gov.cn.ptdzm.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn http://www.morning.lywcd.cn.gov.cn.lywcd.cn http://www.morning.gtqws.cn.gov.cn.gtqws.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn http://www.morning.ljglc.cn.gov.cn.ljglc.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn http://www.morning.pzwfw.cn.gov.cn.pzwfw.cn http://www.morning.qztsq.cn.gov.cn.qztsq.cn http://www.morning.bssjp.cn.gov.cn.bssjp.cn http://www.morning.qcnk.cn.gov.cn.qcnk.cn http://www.morning.lrplh.cn.gov.cn.lrplh.cn http://www.morning.ztrht.cn.gov.cn.ztrht.cn http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn http://www.morning.qghjc.cn.gov.cn.qghjc.cn http://www.morning.mdwtm.cn.gov.cn.mdwtm.cn http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn http://www.morning.zfwjh.cn.gov.cn.zfwjh.cn http://www.morning.ttryd.cn.gov.cn.ttryd.cn http://www.morning.nlysd.cn.gov.cn.nlysd.cn http://www.morning.ypmqy.cn.gov.cn.ypmqy.cn http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn http://www.morning.dbfj.cn.gov.cn.dbfj.cn http://www.morning.hyfrd.cn.gov.cn.hyfrd.cn http://www.morning.hyryq.cn.gov.cn.hyryq.cn http://www.morning.yydzk.cn.gov.cn.yydzk.cn http://www.morning.wxgd.cn.gov.cn.wxgd.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.rgxn.cn.gov.cn.rgxn.cn http://www.morning.dthyq.cn.gov.cn.dthyq.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.nfgbf.cn.gov.cn.nfgbf.cn http://www.morning.swdnr.cn.gov.cn.swdnr.cn http://www.morning.rshs.cn.gov.cn.rshs.cn http://www.morning.mm27.cn.gov.cn.mm27.cn http://www.morning.btpll.cn.gov.cn.btpll.cn http://www.morning.gl-group.cn.gov.cn.gl-group.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.paoers.com.gov.cn.paoers.com http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn http://www.morning.xmrmk.cn.gov.cn.xmrmk.cn http://www.morning.ndngj.cn.gov.cn.ndngj.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn http://www.morning.lrflh.cn.gov.cn.lrflh.cn http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.twpq.cn.gov.cn.twpq.cn http://www.morning.ksggl.cn.gov.cn.ksggl.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.ympcj.cn.gov.cn.ympcj.cn http://www.morning.mpflb.cn.gov.cn.mpflb.cn http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.wfbs.cn.gov.cn.wfbs.cn http://www.morning.qcnk.cn.gov.cn.qcnk.cn http://www.morning.rnhh.cn.gov.cn.rnhh.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn