查看“IDEA:Maven相关”的源代码
←
IDEA:Maven相关
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:IDEA]] == 关于:一点疑惑 == 当前 IDEA 版本:2022.1 IDEA 本地 Maven 索引文件夹:“C:\Users\eijux\AppData\Local\JetBrains\IntelliJIdea2022.1\Maven\Indices” === 关于:相关插件 === Maven 相关的插件主要有三个(默认已绑定): # '''Maven''':提供 Maven 支持。 #*“Maven 项目工具窗口”; #* 专用模块类型; #* '''Maven 仓库支持'''; #* '''pom.xml 文件完全编辑支持'''; #* 导入 Maven 方法支持; #* 运行和调试 Maven 目标; #* 编译; #: [[File:IDEA:插件:Maven.png|400px]] # '''Maven Extension''':提供 Web,JavaEE 和依赖分析图表的 Maven 支持。 #* 在“Maven 项目工具窗口”的上下文菜单显示依赖命令; #* WAR 包; #* InterlliJ Pofiler对Maven运行配置的支持; #: [[File:IDEA:插件:Maven Extension.png|400px]] # '''Package Search''':查找并管理 JVM 和 Kotlin 多平台项目依赖。 #* 支持 Maven 和 Gradle 项目; #: [[File:IDEA:插件:Package Search.png|400px]] === 关于:“远程仓库”和“更新远程仓库索引” === 远程仓库(settings.xml),主要是用于:1、“'''解析依赖(下载依赖项)'''”,2、“'''更新远程仓库索引'''”。 <big><span style="color: blue">'''“更新远程仓库索引”用于:在“无网络”的情况下,提供“依赖提示”。'''</span></big> 【参考:[https://www.jetbrains.com/help/idea/maven-repositories.html https://www.jetbrains.com/help/idea/maven-repositories.html]】 不同的仓库: # Central: #*“更新远程仓库索引”:较慢; # AliMaven: #*“更新远程仓库索引”:'''不支持'''; # Nexus2(本地): #*“更新远程仓库索引”:更新后无错误,但是 IDEA 本地 Maven 索引文件夹大小没有变化,不知道原因。 # Nexus3(本地): #*“更新远程仓库索引”:下载过程(450 M 左右)很快,但是'''索引处理'''(Processing indices)过程较长(大概五分钟),过程结束可以找到新的索引文件夹(780 M 左右); 关于使用 Nexus: 1、Nexus2、Nexus3 可能需要设置代理保证到 Central 的网络。 2、Nexus3 本身不支持下载代理仓库的索引文件,但是 IDEA 通过 Nexus 3 仍能进行“更新索引”操作。 3、Nexus2 直接下载远程仓库的索引文件在 1.5 G 作用,但是通过 IDEA 更新索引的下载内容在 400 M 左右,本地文件大小在 700 M 左右。 === 关于:“依赖提示”和“依赖搜索” === ==== 依赖提示 ==== 在 pom.xml 中,编辑依赖项时的提示。【需要插件“'''Maven'''”的支持】 可以在:1、“'''有网络'''”;2、“'''已更新远程仓库索引'''”的情况下使用。(二者都没有时,由于缓存可以显示部分内容) 【参考:[https://www.jetbrains.com/help/idea/work-with-maven-dependencies.html#generate_maven_dependency https://www.jetbrains.com/help/idea/work-with-maven-dependencies.html#generate_maven_dependency]】 使用: # 通过<big><span style="color: green">'''网络搜索'''</span></big>:(未更新索引)。 #* 提示内容可能不完全、多次搜索提示内容不一样(猜测是网络原因); #* 如果没有默认提示,按下 '''<code>Ctrl</code> + <code>,</code>''',可以强制搜索提示; # 通过<big><span style="color: green">'''索引搜索'''</span></big>:(已更新索引)。 #* 默认即提示在索引中搜索到的所有内容; * 重复按下 '''<code>Ctrl</code> + <code>,</code>''' 之后,搜索并显示更多: **(扩大搜索范围:包、类、接口、枚举) **(扩大搜索方式:关键字拆分) ==== 依赖搜索 ==== 在 pom.xml 中,生成“添加依赖项”后,“依赖项窗口”的搜索框。【需要插件“'''Package Search'''”的支持】 必须在:“'''有网络'''”的情况下使用。 【参考:[https://www.jetbrains.com/help/idea/package-search.html#packages_tool_window https://www.jetbrains.com/help/idea/package-search.html#packages_tool_window]】 使用: : 等效于,通过 <big>'''[https://package-search.jetbrains.com/ IDEA 的“package-search”页面]'''</big> 搜索。 * 没有网络则不能使用; * 支持的仓库: *: [[File:IDEA:插件:Package Search:支持的仓库.png|600px]] == Maven 设置及说明 == 在 IDEA 中使用 Maven 前需要进行设置,以避免使用过程中的一些问题。 默认的 Maven 配置: 1、Maven 主路径:已捆绑(Maven3) ——【IDEA 自带的 Maven】 2、用户设置文件:${user.home}/.m2/settings.xml ——【默认的配置文件】 3、本地仓库:${user.home}/.m2/settings.xml/repository ——【默认的本地仓库地址(默认的配置文件中配置)】 步骤: # 打开“系统设置”('''<code>Ctrl + Alt</code> + <code>S</code>''')的 Maven 页: # 修改以下内容: ## '''Maven 配置''': ##: [[File:IDEA:Maven 设置.png|600px]] ##“'''设置原型目录'''”:<span style="color: blue">“-DarchetypeCatalog=internal”</span> ##* 位于:“运行程序(Runner)”->“VM 选项(VM Options)” ##“'''忽略 SSL 证书验证'''”:<span style="color: blue">“-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true”</span> ##* 位于:“正在导入(Importing)”->“VM 选项(VM Options)” === 说明:“设置原型目录” === 由于:每次创建 Maven 项目都会从远程仓库(Central)下载原型目录(archetype)。 于此,可以使用此配置,用于'''加速 Maven 项目创建'''。 : [[File:IDEA:Maven设置:设置原型目录.png|600px]] === 说明:“忽略 SSL 证书验证” === 对于:使用某些“'''不支持 http 下载,只支持 https'''”的远程仓库(如:阿里云),可以使用此配置。 : [[File:IDEA:Maven 设置:忽略 SSL 证书验证.png|600px]] === 关于“新项目设置” === 如果不修改“新项目设置”下的 Maven 相关项,那么每次在创建 Maven 项目时都会去采用“系统默认”的 Maven 配置,而非“全局配置”的 Maven 配置。 步骤: # 打开“新项目设置”(“文件”->“新项目设置”->“新项目的设置”)的 Maven 页; #: [[File:IDEA:新项目设置.png|300px]] # 修改内容:(参照本节头) == 更新远程仓库索引 == 为 Maven 配置了 setting.xml 之后: 1、仓库显示的远程仓库地址是实际使用的 URL(如果被设置了镜像,就是镜像的地址)。 2、更新仓库索引可能失败,有以下两种情况。 : [[File:IDEA:Maven更新仓库索引.png|600px]] === 更新失败:网络问题 === 错误信息:“'''Cannot connect to the Maven process. Try again later. If the problem presists, check the Maven Importing JDK settings and restart Intelli IDEA'''”。 由于网络原因,无法连接到该远程仓库。 '''解决''': # 方式一:使用国内仓库或镜像。 #: 如:[https://repo1.maven.org/maven2/ https://repo1.maven.org/maven2/]、[https://repo2.maven.org/maven2/ https://repo2.maven.org/maven2/],不稳定但能用; # 方式二:设置代理: #: “<code>Ctrl + Alt</code> + <code>S</code>”-> ... ->“Maven”->“importing”:在“VM options for importer”项,添加: #: <syntaxhighlight lang="xml">-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=10800</syntaxhighlight> #: [[File:Idea:为 Maven-importing 设置代理.png|none|thumb|600px|Idea:为 Maven-importing 设置代理]] #* 如果使用 shadowsocks:相关地址不在 PAC 名单中,所以可能需要使用全局模式。 === 更新失败:该仓库不支持仓库索引 === 错误信息:“'''Repository is non-nexus repo, or is not indexed'''”。 配置的远程仓库不支持索引。(如:阿里云) '''解决''':使用支持索引的 Maven 仓库; === 其他思路: === 针对于以上两个问题: 1、国外仓库支持索引,但网络不稳定; 2、国内仓库网络稳定,但不支持索引。 除了使用代理,还有其他思路。 ==== 一、使用 Nexus 私服 ==== 用私服代理远程仓库,需要: 1、保证本地到私服的网络; 2、保证私服到被代理仓库的网络;(问题一) 3、保证被代理的仓库支持索引;(问题二) 【其实就是转移问题了】 参考: 1、“[https://blog.csdn.net/qq_40573891/article/details/80711107?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-10.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-10.no_search_link 利用nexus私服,解决IDEA无法下载maven仓库索引文件的终极解决方案]” 2、“[https://blog.csdn.net/u010165638/article/details/89948308 IDEA Maven Repositiory Index 错误/ resource nexus-maven-repository-index.properties does not exist]” : 见:'''[[Maven:settings.xml示例#示例二:使用_nexus2/3]]''' ==== 二、利用本地 Web 服务作为索引下载服务器 ==== 步骤: 1、下载两个文件:[https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties nexus-maven-repository-index.properties]、[https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz nexus-maven-repository-index.gz]; 2、启动本地 Web 服务,在其根目录下建立一个“/maven2/.index”的虚拟目录,并把上述两个文件拷贝至该虚拟目录下; (注意:如果你使用的是 Windows 系统,可能无法建立“.index”件夹,必须使用 DOS 命令:<syntaxhighlight lang="bash" inline>mkdir .index</syntaxhighlight>)。 3、编辑 host 文件(“C:\Windows\System32\drivers\etc\hosts”),在尾巴追加<syntaxhighlight lang="xml" inline>127.0.0.1 repo1.maven.org</syntaxhighlight>; 4、在 IDEA 上更新 Maven 插件索引; 5、删除 host 中(第三步)添加的内容。 参考: 1、[https://www.jyoryo.com/archives/25.html Intellij IDEA利用Maven索引实现自动补全] == 使用:为项目添加依赖项 == 一般可以通过 <span style="font-size: 18px">'''[https://mvnrepository.com/ mvnrepository 网站]'''</span> 搜索软件包的依赖配置信息,然后直接复制到项目的“pom.xml”文件中。 如果要通过 IDEA 添加依赖项,有以下两种方式。(需要 IDEA 的 Maven 索引) === 方法一:通过“依赖项模板” === : [[File:IDEA:添加依赖项_2.png|400px]] 步骤: # 打开“pom.xml”文件; # 使用 '''<code>Alt</code> + <code>Insert</code>''',并选择“'''依赖项模板'''”; # 在模板中分别输入相关内容;【有代码提示,但较慢】 # 加载 Maven 变更; === 方法二:通过“依赖搜索窗口” === : [[File:IDEA:添加依赖项.png|600px]] 步骤: # 打开“pom.xml”文件; # 使用 '''<code>Alt</code> + <code>Insert</code>''',并选择“'''添加依赖项'''”; # 在“依赖项窗口”: ## 上侧:搜索栏,输入关键字; ## 左侧:结果列表,点击依赖,并选择版本; ## 右侧:显示软件包详情(包括:仓库、项目站点、文档、自述文件等); ## 点击“添加”; # 加载 Maven 变更; ==== 修改依赖项版本(升级) ==== : [[File:IDEA:设置依赖项版本.png|800px]] 步骤: # 在“依赖项窗口”:选择需要修改的依赖项的版本; # 加载 Maven 变更; == 使用:创建 Maven 项目 == 创建 Maven 项目,即:从 '''Archetype''' (原型、模板)创建一个 Maven 项目。 开发人员可以在此基础上进行扩展开发。 === 关于“-DarchetypeCatalog”参数 === IDEA 创建 Maven 项目的实质:根据 maven '''archetype'''(原型)的配置,执行 '''<syntaxhighlight lang="bash" inline>mvn archetype:generate</syntaxhighlight>''' 命令。 该命令执行时,需要指定一个“'''archetype-catalog.xml'''”文件(约为 12 M)。 参数“<span style="color: blue">'''-DarchetypeCatalog'''</span>”,用于指定“archetype-catalog.xml”文件的获取方式: # '''remote''':,即,从“'''远程'''”获取;——【即:“中央仓库”的“[http://repo1.maven.org/maven2/archetype-catalog.xml http://repo1.maven.org/maven2/archetype-catalog.xml]”路径】 #* (默认) #* 下载速度很慢,容易导致创建过程卡住。 # '''internal''':从“'''内部'''”获取;——【即:“maven-archetype-plugin”内置的 archetypeCatalog 文件】 #* (建议) # '''local''':即,从“'''本地'''”获取;——【即:设置的本地仓库中】 #* 需要保存“archetype-catalog.xml”文件,至本地(“${localRepository})\org\apache\maven\archetypes\archetype-catalog\<版本>”)。 # 使用“在 IDEA 中添加的指定路径”: #: [[File:IDEA:Maven 设置:Archetype目录.png|600px]] #* 需要保存“archetype-catalog.xml”文件,至该路径。 <big>'''[https://repo1.maven.org/maven2/archetype-catalog.xml 下载“archetype-catalog.xml”]'''</big>(右键保存) == FAQ == === 为什么“${user.home}/.m2/repository”中有下载内容? === ---- 即使在 IDEA 全局配置中修改了 Maven 配置文件地址,即使 settings.xml 中指定本地仓库到了其他位置。 在“${user.home}/.m2/repository”下依然会时不时有新下载的依赖包。 可能是因为: # 系统设置中: #* 仍然使用 IDEA 中默认绑定的“Bundled(Maven 3)”; #* 依然使用默认的 Maven 配置(配置文件“${user.home}/.m2/settings.xml”),指定的仓库地址为“${user.home}/.m2/repository”; #* 使用的“settings.xml”中设置的本地仓库为“${user.home}/.m2/repository”; # 新项目设置中: #* 仍然使用 IDEA 中默认绑定的“Bundled(Maven 3)”; #* 依然使用默认的 Maven 配置(配置文件“${user.home}/.m2/settings.xml”),指定的仓库地址为“${user.home}/.m2/repository”; #* 使用的“settings.xml”中设置的本地仓库为“${user.home}/.m2/repository”; # 通过 IDEA 下载的依赖项,默认地址即为“${user.home}/.m2/repository”; #: [[File:IDEA:通过IDEA添加依赖项(不使用Maven).png|600px]] 通过 IDEA 和 Maven 添加的依赖项,对比: [[File:IDEA:通过IDEA和Maven管理的依赖项.png|600px]] === 错误:Clean 等命令运行错误 === ---- '''描述:'''双击“Mavne 项目工具窗口”的 Clean 等命令时,收到错误信息: : <syntaxhighlight lang="bash" highlight=""> Error occurred during initialization of VM Unable to allocate 130176KB bitmaps for parallel garbage collection for the requested 4165632KB heap. </syntaxhighlight> : [[File:IDEA:Maven运行Clean错误.png|600px]] '''解决:'''在“VM options for importer”中,添加:<span style="color: blue">-Xmx4096M</span> : 设置位置:“<code>Ctrl + Alt</code> + <code>S</code>”-> ... ->“Maven”->“importing”; : [[File:IDEA:Maven运行Clean错误:解决.png|600px]] === 错误:“Maven Projects Tool Window”的红线提示 === ---- '''描述:'''在“Maven 项目工具窗口”的依赖项中,部分依赖下有红线提示,但问题窗口并没有关于项目的任何错误信息。 : [[File:IDEA:Maven窗口的红线.png|400px]] '''解决:'''在 pom.xml 文件中: # 剪掉对应依赖,加载 maven 变更; # 贴上对应依赖,加载 maven 变更; === 错误:“Invalid packaging for parent POM ..., must be "pom" but is "jar"” === ---- '''描述:'''项目(Project)下存在多个模块(Module),且项目、模块下均存在“pom.xml”时,收到错误信息: : <syntaxhighlight lang="bash" highlight=""> [ERROR] Maven model problem: Invalid packaging for parent POM com.eijux:Eijux:1.0-SNAPSHOT (D:\Documents\IdeaProjects\Eijux\pom.xml), must be "pom" but is "jar" at D:\Documents\IdeaProjects\Eijux\pom.xml:-1:-1 </syntaxhighlight> '''解决:'''为 Parent 的 pom.xml 添加:<span style="color: blue"><packaging>pom</packaging></span> : <syntaxhighlight lang="xml" highlight="6"> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <groupId>com.eijux</groupId> <artifactId>Eijux</artifactId> <version>1.0-SNAPSHOT</version> ... </syntaxhighlight> === 错误:“Could not find artifact ... in nexus3 (http://localhost:8091/repository/maven-public/)” === ---- '''描述:'''修改 pom.xml 后 Reload 时,收到错误信息: : <syntaxhighlight lang="bash" highlight=""> Could not find artifact org.springframework.boot:spring-boot-starter-hateoas:pom:3.0.0 in nexus3 (http://localhost:8091/repository/maven-public/) </syntaxhighlight> : Maven 配置的镜像为:本机搭建的 Nexus3(http://localhost:8091/repository/maven-public/) '''解决:''' : 原因可能是: # Nexus3 未启动; # Nexus3 不能连接到代理仓库(此时代理仓库状态为“???”); #: 大概就是不能通过“127.0.0.1:10800”连接到远程仓库,之前为 Nexus3 设置了 代理,现在代理失效导致。 # Nexus3 未更新远程索引(此时代理仓库状态为“Online - Ready to Connect”); 总之,保证 Nexus3 启动,且代理仓库的状态为“<span style="color: blue">'''Online - Remote Available'''</span>”则可正常使用,再有异常可能是网络状况不好。
返回至“
IDEA:Maven相关
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息