maven 的各种奇怪现象、问题

 

maven 入门是很容易的,但是用好比较难。

 

经常是各种奇怪问题。

 

比如, 我一个maven工程的 依赖的jar 已经发生了变化: 可能类名、方法、字段都已经改了, 但我当前工程 却没报错, 重新编译也没有出现任何问题, 但是呢, 你重启一下idea ,问题就出来了!

 

why, 应该是还是各种缓存引起的!

 

首先, target 目录下有之前编译好的class, 如果不 clean 他们,那么我们 package 打包就不会重新编译,也就是没有 compile 这个步骤。 那么,依赖jar 修改引起的问题就不会暴露出来。 但是那个依赖问题是客观存在的。

 

因为之前依赖的jar 是没问题的, 但是现在的jar 已经不是最新的了, 按理说, 当前工程也是  必须需要重新编译的, 但是呢, 我们可能会忘记, 比如我, 往往就是为了省事, 直接一个 install ,这个时候呢, 其实是不对的!

 

pom 能够继承的元素。

 

如何知道哪些 元素是继承而来的?

 

 

 --- 

有时候也经常遇到:

 Error running 'umc-portal [clean]': No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your system.   

 M2_HOME 我其实是有设置的,但是没有啥用, 也就是说跟 M2_HOME  无关。(这么说, 也算是一个idea 插件的小bug)

maven 的各种奇怪现象、问题

 打卡 config dialog 一看:

       maven 的各种奇怪现象、问题

 

 

仔细一想, 这个大概是因为我切换了 idea 引起的

maven 的各种奇怪现象、问题

 

 

 idea 从2020 升级到2021, 就出现了

 

C:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/plugins/maven/lib/maven3 应该是之前的目录,后面卸载了 idea 2020, 但是仍然保留了一些残留。 

 

 maven 的各种奇怪现象、问题

 

 

 

解决方法很简单, 点击选择其他的 可用的 maven即可:

 不过, Use Maven wrapper 也是不能选择的,因为我没有这个文件:

maven 的各种奇怪现象、问题

 

 

 

Maven Wrapper:

maven 的各种奇怪现象、问题

Maven Wrapper 是什么? 它是一个包装器,我也没有用过,看起来是需要 一个 Maven-Wrapper.properties文件, 我本地也没有.mvn 目录, 没有那个properties文件

 

那么

 

 

idea 自带的maven插件

maven 的各种奇怪现象、问题

 

 

 

 

maven 的各种奇怪现象、问题

 

 

Bundled (Maven 3)


什么是Bundled (Maven 3), 其实就是idea 自带的maven, Bundled就是绑定的。 这个应该是安装idea 的时候,选择插件的界面选择的。(记得默认就会有maven插件, 还好很多其他一大堆)


之前的idea 版本,好像还有 Bundled (Maven 2),

IDEA 中 maven 自带 Bundled (Maven 2) 和 Bundled (Maven 3) 的文件目录位置在 idea 安装的 plugins 目录中。

假设 IDEA 安装目录为:D:\work\ideaIU-2017.3.1.win\

Bundled (Maven 2)的目录为:D:\work\ideaIU-2017.3.1.win\plugins\maven\lib\maven2
Bundled (Maven 3)的目录为:D:\work\ideaIU-2017.3.1.win\plugins\maven\lib\maven3

 

默认的Bundled (Maven 3),当然 也有一个settings.xml,位于
C:\Program Files\JetBrains\IntelliJ IDEA 2021.1\plugins\maven\lib\maven3\conf\settings.xml

但是呢,这个可能不是我们所需要的, 所以呢, 我们修改它即可, 另外呢, 如果Bundled (Maven 3) 不能满足需求,我们可以另外下载一个 apache-maven 可执行程序

然后指定它即可。 比如我的 D:/devTool/apache-maven-3.3.9 :


不过呢, 这样做好像没有什么必要! 因为,一般 idea 自带的maven插件就足够。

 

另外, 这里有两行是什么意思?

 maven 的各种奇怪现象、问题

 

 

 

我登录用户是lk, 所以默认 本地仓库地址是 C:\Users\lk\.m2\repository ;


Override 表示是可以覆盖的, 如果勾选了override,那么就可以修改。User settings file  是可以随意指定的。

这里的 User settings file 的优先级其实是最高的。高于 maven下的配置:比如 maven-home\conf\settings.xml, 也就是覆盖的作用。

 

本地仓库的地址呢, 还可以通过Local repository 进行设置,这个优先级更好,可以覆盖User settings file 中的localRepository 

 

上一篇:Django2实战示例 第十三章 上线


下一篇:WPF之控件模板