温州企业建站系统模板,抚州市城乡建设局网站,微信管理系统免费,建立一个app平台需要多少钱目录
一.Maven介绍与功能
二.依赖管理
1.依赖的配置
2.依赖的传递性
3.排除依赖
4.依赖的作用范围
5.依赖的生命周期 一.Maven介绍与功能
maven是一个项目管理和构建工具#xff0c;是基于对象模型POM实现。
Maven的作用#xff1a; 便捷的依赖管理#xff1a;使用…
目录
一.Maven介绍与功能
二.依赖管理
1.依赖的配置
2.依赖的传递性
3.排除依赖
4.依赖的作用范围
5.依赖的生命周期 一.Maven介绍与功能
maven是一个项目管理和构建工具是基于对象模型POM实现。
Maven的作用 便捷的依赖管理使用Maven可以简化依赖管理过程。通过在项目的pom.xml文件中声明依赖关系Maven可以自动下载所需的依赖库并将它们添加到项目的类路径中。这消除了手动下载和配置jar包的繁琐过程使依赖管理更加方便和可靠。 统一的项目结构Maven定义了标准的项目结构规定了源代码、资源文件、测试代码等目录的布局方式。这使得不同IDE如Eclipse、IntelliJ IDEA之间可以共享和识别相同的项目结构简化了项目之间的迁移和协作。 标准的项目构建流程Maven提供了一套标准化的项目构建流程。通过执行Maven命令可以进行项目的编译、测试、打包、部署等一系列操作。这种标准化的构建流程确保了项目的一致性和可重复性提高了开发效率。 二.依赖管理
1.依赖的配置
所谓的依赖指的就是当前项目所需要的jar包一个项目可以引入多个jar包
案例导入多个包 mysql、ch.qos.logback两个包
首先打开maven项目工程找到pom.xml
设置依赖标签
!-- 设置标签依赖--dependencies
!-- 设置具体依赖--dependency
!-- 配置代表项目或组织的唯一标识符--groupIdch.qos.logback/groupId
!-- 配置代表特定项目的唯一标识符--artifactIdlogback-classic/artifactId
!-- 配置版本号--version1.2.3/version/dependency!-- 操作类似--dependencygroupIdmysql-java/groupIdartifactIdmysql-java/artifactIdversion5.1.21/version/dependency/dependencies
如果以前没有使用过相关jar包则会冒红报错因为在本地仓库没有找到相关的jar包 2.依赖的传递性
如果一个项目projectA依赖了一个A-jar包而一个A-jar包中又依赖了其他的jar包那么projectA对应的也就依赖了A-jar包对应的其他jar包 依赖传递有两种一种是直接依赖一种是间接依赖 通过图标形势查看依赖关系
在pom中右键找到图再点击显示依赖项 这样就可以清晰看到项目之间的依赖 当然依赖可能会产生一个特殊情况A-B-A 循环依赖项目A依赖了项目B而项目B依赖了项目A。这种情况也是面试题常问的一个问题 面试题Maven中如何解决依赖循环的问题 重构代码结构首先我们可以检查项目结构并尝试重构代码以消除依赖循环。这可能需要重新设计模块之间的关系将公共功能提取到独立的模块中或者修改模块的依赖关系以确保它们形成一个有向无环图DAG。 使用接口或抽象类如果依赖循环是由于具体类之间的相互依赖引起的我们可以考虑使用接口或抽象类来解耦它们。这样依赖关系将变得单向并且可以更容易地管理。 使用Maven插件Maven提供了一些插件来帮助解决依赖循环问题。例如可以使用Maven的maven-dependency-plugin来分析项目依赖关系并找出导致循环的依赖。然后我们可以使用exclude或optional标记将其中一个模块的依赖排除或设置为可选以打破循环。 模块拆分另一种方法是将存在依赖循环的模块拆分为更小的、相互独立的模块。这样我们可以将它们放在不同的项目中并使用Maven的多模块项目进行管理。通过将功能划分到不同的模块中可以更好地管理和控制它们之间的依赖关系。 3.排除依赖
由上面的内容可以知道依赖具有传递性PorjectA项目会依赖A-jar包下的所有依赖jar包。但是如果明确知道工程ProjectA中只需要A-jar包不需要A-jar包下的某一个包则可以通过exclustions标签和exclustion实现排除依赖 exclusionsexclusiongroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactId/exclusion/exclusions 可以看到用了排除依赖后相关jar包就不存在了 4.依赖的作用范围
依赖的jar包在默认情况下可以在任何地方使用或者也可以通过scope/ scope标签来设置相应jar包的作用范围 作用范围 主程序范围有效main文件夹内测试程序范围有效test文件夹范围内是否参与打包运行package指令范围内 scope标签值与对应的作用范围 案例
设置logback的jar包的范围为test实现只能在test测试程序中运行 注意不要忘了点击更新 接下来测试是否更改了作用范围
1.在test中使用logback的jar包对象可以看到有提示相应的jar包 2.在main中使用则会发现并没有相应的jar包 5.依赖的生命周期
在Maven中有三套相互独立的生命周期
clean 负责清理上一次编译产生的字节码文件default 核心工作 负责编译、测试、打包、安装、部署等等site 生成报告、发布站点等
每一套生命周期都有许多的生命周期阶段但是我们需要用到的生命周期并不需要太多只需要掌握以下几个核心生命周期的阶段即可 核心的生命周期阶段
clean 移除上一次构建生成的文件compile 编译项目的源代码test使用合适的单元测试框架运行测试package将编译后的文件进行打包install安装项目到本地仓库 注意同一套的生命周期的运行是由循序的后面的生命周期的运行是需要依赖前面的生命周期的运行。所以如果使用后面的生命周期阶段就会自动执行前面的生命周期
比如运行test会自动运行validate与compile但是不会运行clean因为clean与这些不是同一套的生命周期
运行指定的生命周期
有两种方式运行指定的生命周期
第一种找到右侧栏中的maven打开项目下的生命周期找到对应周期双击运行即可 第二种在idea或者cmd中输入指令 mvn xxx即可执行对应的生命周期阶段 周期跳过
在工程文件中找到生命周期找到小闪电图标点击即可跳过对应的生命周期。