- 1.--IDEA创建Maven项目报错- Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model
- 出现这样的报错,是由于maven版本过高,需要降低版本,从新配置即可解决
- idea2021可以使用maven3.8以及以前的版本
- idea 2020 可以使用3.6左右以及以前的版本
- 我使用的2021.3版本的idea
- 最新的3.8.6不能兼容,所以使用的3.8.4
- 2.--Maven中插件plugin和依赖dependency的区别
- 依赖的话就相当于你用c写代码时候引用的库文件
- 你之所以引用这些库是因为你需要它里面的函数,需要通过这些函数构建自己的代码
- 所以最终你调用的库函数成为了你代码的一部分
- 插件呢,相当于你用word写文档时候最上面工具栏里面的工具,比如你可以通过‘插入图片’工具往word里面插入一张喜欢的图片
- 可是插件与你的文本本身不发生任何关系
- 3.--Maven运行test类成功而没有打印结果
- 初学maven时,创建的测试类有打印结果,但通过maven test运行时只能看到一些提示信息,而没有打印结果
- maven是构建成功了的,也无错误提示
- 实际解决:
- test测试类名必须是Test,或以Test开头,或以Test结尾!
- 4.--Maven报错-The goal you specified requires a project to execute but there is no POM in this directory
- 根据官方文档,创建项目时输入
- mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- 报错
- 实际解决:
- 给命令打上双引号("")
- mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=my-app" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DarchetypeVersion=1.4" "-DinteractiveMode=false"
- 5.--Maven插件找不到问题
- 网上的办法有核实插件版本,修改Maven镜像到阿里云,将.m2(IDEA自带MAVEN)或者 自定义仓库中的依赖全部删除后重新下载
- 可好像不太行
- 实际解决:
- 主要是由于插件都写在 pom文件的 <build>标签下
- 这个标签下,Maven是不会去中央仓库下载依赖的,所以标红
- 我们要做的就是将插件的坐标,从<build>标签复制到 <dependency> 标签下,然后Maven就会去仓库找插件下载,下载完成后,再删除<dependency>标签下的插件坐标,即可解决问题
- 6.--关于Maven项目自定义配置的插件不在maven project界面显示出来的解决方案
- 原因就是它:pluginManagement标签
- 接下来把这标签注释掉就可以了
- pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManagement声明可以被继承
- pluginManagement一般是用来在父POM中定义,提供给子POM使用,子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;
- 而在父POM中的pluginManagement并不会介入到Maven的生命周期
- pluginManagement主要是为了统一管理插件,确保所有子POM使用的插件版本保持一致,类似dependencies和dependencyManagement