Intellij idea下查看maven的依赖图与eclipse有所不同。下面简单介绍一下Intellij下maven的查看使用。...使用场景 当你想查看maven依赖的jar都有哪些,是否有冲突,冲突在哪些地方,哪些jar包是因为哪个依赖导致缺少等。这些时候,你就需要查看一下maven的依赖树。...使用方法 (1)打开pom.xml文件; (2)在pom文件内部点击右键; (3)选择Diagrams(或紧挨着下面的maven)–Show Dependencies; (4)这时就可以看到...maven依赖图了,但此时的图只是一个缩略图。...具体使用 在maven依赖图上有一排按钮。
在一个 maven 的项目中,我们需要知道我们的项目中使用的包可能有哪些冲突。这个在 IntelliJ IDEA 中提供了贴心的查看。选择 Maven 项目中的分析依赖。...随后,IntelliJ IDEA 将会打开一个依赖分析的标签页。在这个标签页中,我们可以看到我们项目中导入的依赖有哪些冲突,并且这些冲突是怎么冲突的。如上图中,带有感叹号的就是有冲突的依赖。...https://www.isharkfly.com/t/intellij-idea-maven/15046
插件 maven-dependency-plugin:2.8 解包当前模块依赖的maven模块中的文件 使用goal:unpack-dependencies 在配置参数includeArtifactIds...中指定要解包的模块制件ID org.apache.maven.plugins...maven-dependency-plugin ...configuration> 解包指定maven...模块中的文件 使用goal:unpack 可以指定非当前模块所以来的maven模块 org.apache.maven.plugins
对于 Java 开发工程师来说,Maven 是依赖管理和代码构建的标准。遵循「约定大于配置」理念。Maven 是 Java 开发工程师日常使用的工具,本篇文章简要介绍一下 Maven 的依赖树解析。...依赖树结构 在 pom.xml 的 dependencies 中声明依赖包后,Maven 将直接引入依赖,并通过解析直接依赖的 pom.xml 将传递性依赖导入到当前项目,最终形成一个树状的依赖结构。...针对这种多个版本构建依赖时,Maven 采用「短路径优先」原则,即 A 会依赖 2.0 版本的 E。如果想引入 1.0 版本的 E,需要直接在 A 的 pom 中声明 E 的版本。...依赖排除 我们可以使用 exclusion 来解决依赖冲突,但是 exclusion 会降低 Maven 依赖解析的效率,因为对应的 pom 文件不能缓存,每次都要重新遍历子树。...[2020-11-07-103350.png] Maven 命令行 mvn dependency:tree -Dverbose
前言 相信久经沙场的 Java 开发同学们,一定对 Maven 这个工具不陌生。Maven 的依赖调解原则,便是经常聊到的话题。...的配套核心依赖 dependency:tree,包括两个项目: maven-dependency-plugin-2.8(源码下载:https://archive.apache.org/dist/...dependency:tree 是 Maven 的核心依赖插件,它在依赖解析时发挥重要作用,平时我们也经常使用命令 mvn dependency:tree 输出目录树进行查看。...这个插件由两部分组成,分别是 maven-dependency-plugin 和 maven-dependency-tree;前者包含了与「依赖」相关的多种插件,其中就包括 tree 插件;后者则是 tree...为了进行实验,我们需要搭建一个 Demo 项目,并用 Maven 管理依赖包。该项目名称为 mavenDependencyDemo,我们在其中创建五个模块 A、B、C、D、X。
依赖管理在之前的传统 WEB 项目中,所依赖的 JAR 包都要复制到工程中,这就导致了工程比较大。...Maven 的解决方案:在 Maven 工程中,是不直接把 JAR 包直接导入到工程中的,其通过在 pom.xml 文件中添加所需的 JAR 包坐标来解决问题。...clean:主要处理项目构建后的清理工作site:主要处理项目的站点文档生成default 生命周期包含了右图的这些阶段compile 命令:下载所有当前项目所需要的插件,以及所有依赖的项目,然后进行构建...package 命令:从 pom 文件中获取打包类型,然后将打出来的 JAR 输出到对应目录install 命令:将打包完放在 target 目录下的 JAR 包部署到本地仓库POMpom.xm元素解析...project 这个元素是Maven的pom.xml文件的顶层元素。
pom.xml文件的project标签上提示如下图所示的效果: 具体内容: java.lang.OutOfMemoryError:GC overhead limit exceeded 该问题是于IDEA里为Maven...解决方案 打开IDEA设置,找到Maven -->Importing选项卡 可以将这里的最大堆内存设置大一些比如 -Xmx3072m 然后重新打开或者导入项目即可
一、指定编译文件的编码 maven-compile-plugin 1 2 org.apache.maven.plugins...编译时出现乱码,通常这样指定编码后,即可解决 二 、打包同时生成源码 maven-source-plugin 1 2 maven-source-plugin...argLine> 8 9 argLine这里指定了UTF-8编码,解决了中文乱码问题 四、 单独打包依赖项...runtime 23 24 25 最终所有依赖项...这也意味着,你同时可以有多个打包配置规则,比如依赖项打包成文件A,所有配置打包成文件B... 五、打包时指定资源目录resouces的文件编码 1 <!
场景 A有这样的依赖关系:A->B->C->X(1.0)、A->D->X(2.0),X是A的传递性依赖,但是两条依赖路径上有两个版本的X,那么哪个X会被Maven解析使用呢?...两个版本都被解析显然是不对的,因为那会造成依赖重复,因此必须选择一个。根据路径最近者优先原则,该例中X(1.0)的路径长度为3,而X(2.0)的路径长度为2,因此X(2.0)会被解析使用。...也就是说,apache-maven-3.6.3 这个核心项目已经做出了「应该保留哪个依赖」的判断。 因此我们再次中断调试,回到 apache-maven-3.6.3 核心项目重新调试。...,让我们看看: 其实很容易发现,依赖的解析过程就是一种深度遍历,这里的 recurse 方法会被不断递归。...小结 至此,我们已经知道了路径最近者优先原则的运行原理:依赖的解析是一种深度遍历的过程,每当解析一个依赖后,均会将其放到 resolvedArtifacts 这个Map中,后续再看到同名的依赖时,进行冲突调解
简单翻译一下,使用 dependencyManagement 声明的依赖若指定了版本,可以: 指定传递依赖的版本(即使传递依赖有自定义版本,也会被覆盖掉); 当直接依赖没有指定版本时,指定其版本...那回到 Maven 核心项目,看看 includeArtifact 方法被哪里调用了: 继续顺着调用链往上找, 看到很奇怪的现象,C 依赖的 X 变成 2.0 版本了,但是 C 中明明是 X(1.0...可以看到,解析 C 依赖的 X(1.0)时,被“manage”了,也即:版本被改成了 2.0。 很明显,版本号是以 managedVersions 为准的。...最终我们找到了这里: 至此,我们找到了「解析 dependencyManagement 中定义的依赖版本」的源码。...小结 依赖解析过程中,会解析 dependencyManagement 定义的依赖版本,如果解析到了,会以 dependencyManagement 重定义的依赖版本为准,也就是我们常提到的版本锁定。
因此我们需要以调试方式启动 Maven 源码,以便让流程继续走下去。 打开 apache-maven-3.6.3 项目,新建一个远程调试配置,端口选择 8000。如下图所示。...以调试方式启动 Maven 源码(你可以在入口处打个断点),就会发现流程走进来了。如下图所示。 然后我们就可以愉快地进行调试了。...注 1:本文以 Maven 核心源码为例介绍了调试流程,其实 Maven 插件的源码调试方法也是一模一样的。...注 2:这种调试的方法很灵活,我们可以随便选择不同的业务项目,与 Maven 源码进行联调。当然也有很多调试 Maven 源码的方法,但要设置一大堆东西。...搞清楚如何调试 Maven 和插件源码后,我们就可以开始正式分析了。
Eclipse中添加maven依赖时总是找不到外部依赖,没法根据输入弹出可用的依赖项。...Windows --》 show view --》 other --》 Maven 点击展开Global Repositories 右键点击central (http://repo.maven.apache.org.../maven2) 选择 Rebuild Index, 等待几分钟重新构建索引完成。。...完成后就可以在项目右键点击–》Maven --》Add Dependency,可以输入相关依赖匹配到了。...参考 : https://stackoverflow.com/questions/9164893/how-do-i-add-a-maven-dependency-in-eclipse
现象 maven项目的依赖项scope为provided时,表示此以来项目由运行环境提供,开发时直接启动可能会报NoClassDefFoundError异常 Idea版本 2021.3 (其他版本类似)
IDE环境中,可以直接用exec-maven-plugin插件来运行java application,类似下面这样: 1 2 org.codehaus.mojo...环境,只能用 java -jar xxx.jar这种方式来运行,下面是一些处理细节: 一、依赖项的处理 java application运行时需要查找依赖的第三方jar,如果查找classpath失败,...就会报错,可以先用 mvn dependency:copy-dependencies -DoutputDirectory=target/lib 命令,把依赖的jar包全部导出到target/lib这个目录下...Main-Class: ctas.importer.reader.app.Program 7 Archiver-Version: Plexus Archiver 其中第4行指定了classpath,也就是所依赖的...> 15 第7行指定Main-Class,第9行指定classpath的相对路径,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二项
maven项目引用的jar坐标: poi 3.14 如果XSSFWorkbook依旧无法使用
Caused by: java.lang.ClassNotFoundException: com.github.benmanes.caffeine.cache.Cache找不到的这个类是在子模块中引入的依赖包...;尝试编译子模块,提示错误Error resolving version for 'org.apache.maven.plugins:maven-resources-plugin': Plugin requires...Maven version 3.0察觉可能是maven版本的问题;打开File-settings,搜索maven图片发现使用的maven版本为2;替换版本为maven3;图片问题解决;----还有个问题...,如果使用自己下载的maven版本,会出现无法导入maven工程的错误;提示如下Unable to import maven project: See logs for detailsmaven版本为3.6.3...这个问题建议升级maven版本
What’s BOM BOM(Bill of Materials) 是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包...1.1版本; 项目C 1.2依赖项目D 1.3版本; 在该例中,项目A对于项目D的依赖就会出现冲突,按照maven dependency mediation的规则,最后生效的可能是:项目A中会依赖到项目...D1.1版本(就近原则,取决于路径和依赖的先后,和Maven版本有关系)。...每个项目(如果支持此功能)都提供自己的bom文件,并管理其相关依赖项的版本。 Spring、SpringBoot、SpringCloud自身都采用了此机制来解决第三方包的冲突 ...." xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0
1.问题描述 Cannot resolve javax.servlet.jsp:javax.servlet.jsp-api:2.3.1 依赖
在开发Java项目时,我们通常会使用Maven来管理项目的依赖项。然而,有时在配置了pom.xml文件后,我们可能会遇到IntelliJ IDEA无法提供代码提示的情况。...install命令,以确保依赖项被正确下载和安装。...刷新Maven项目:打开IntelliJ IDEA,在右上角的"Maven Projects"工具窗口中,点击刷新按钮。这将重新加载所有的Maven项目。...经过以上步骤,应该能够解决IntelliJ IDEA无代码提示的问题。现在,你应该能够在编辑器中获得有关添加的依赖项的代码提示和自动补全功能。...总结:通过正确配置pom.xml文件,执行clean和install命令安装依赖,然后刷新Maven项目或执行Reimport操作,我们可以解决IntelliJ IDEA无代码提示的问题。
场景 路径最近者优先原则不能解决所有问题,比如这样的依赖关系:A-> C->X(1.0)、A->D->X(2.0),X(1.0)和 X(2.0)的依赖路径长度是一样的,都为 2。...那么到底谁会被解析使用呢?...在 Maven 2.0.8 及之前的版本中,这是不确定的,但是从 Maven 2.0.9 开始,为了尽可能避免构建的不确定性,Maven 定义了依赖调解的第二原则:第一声明者优先。...在依赖路径长度相等的前提下,在 POM 中依赖声明的顺序决定了谁会被解析使用,顺序最靠前的那个依赖优胜。该例中,C 的依赖声明在 D 之前,那么 X(1.0)就会被解析使用。..." xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0
领取专属 10元无门槛券
手把手带您无忧上云