".idea"文件夹—被无视的项目守护者

820 阅读4分钟

一、前言

芜湖,我也开始造轮子咯!

intellij IDEA 已经成为几乎每个 Java 程序员必不可少的代码编辑器,但是很少有人去思考 IDEA 是如何管理我们的项目的。假如有一天没有了我们赖以生存的 IDEA,我们还能写出多少代码?甚至把代码组装成一个项目都要成为一件很难的事情。

本篇文章是一篇探索小文,没有全面的介绍更没有严格的考证,只是笔者工作中的一些经验分享,希望厉害的大佬们轻喷~

二、需求引发思考

在上周的工作需求中,有这么一条:

写一个 IDEA 插件,当用户点击 Run/DeBug 时将 Java 启动时的参数通过插件一键添加在VM options 中。

image-20210425233806367.png

当时接到需求的我是懵逼的,感觉自己无从下手,不过静下来之后思考了一会儿,有了两个思路:

一、找到 Run/DeBug Configuration 的实现类,用反射的方式对 Runner 类的某个方法进行增强,通过 JavaParameters 类添加 VM options。

二、找到 Run/DeBug Configuration 的持久化的方式(我能想到的就是写成本地文件或者存入数据库),从最底层对其进行修改。

果断的选择第二种,因为第一种咱不熟呀!于是我就开始了寻找配置文件的漫漫长征路。

三、思路大于盲目投入时间

最开始我在 IDEA 的安装目录下找了很久,.properties文件更是不能放过,找到一个就去研究一个,结局是注定一无所获的。我当时明白了一个道理,不去思考的人是真正的懒人,而懒人投入时间精力得不到结果是正常的。于是我开始思考这个配置文件的特性:

一、每个项目都会存在这个配置文件

二、这个配置文件不会放在远离项目的地方,从项目管理、效率或者是安全的角度来看这个文件放在项目的目录中是最合适的

带着思考我的目光就对准了每个项目都有并且长久以来被我忽视的.idea文件夹,点开它看到了一堆.xml文件,心想应该八九不离十了。对于这堆.xml文件,我并没有选择一个一个翻开去找,而是用了更为巧妙的方式:用 IDEA 集成 git 的一个便捷功能。

众所周知,当你用 git 提交代码后,项目中所有文件的颜色都会变成正常的黑色,但是一旦这些文件发生了改变,文件就会改变颜色。通常情况下.idea文件是要忽视提交的,于是我更改了.gitignore文件使该文件夹全部文件提交,然后对 Run/DeBug Configuration 的配置进行更改。果不其然,其中的workspace.xml文件变色了。之后用搜索字段的功能顺利找到了VM options的配置,事半功倍。

image-20210426001105298.png

四、编写代码

找准了目标就容易下手了,需求变成了用 Java 解析 .xml文件,推荐使用工具包 dom4j.jar ,不过像这种四层以上的树结构并且它们的叶子还很像的DOM用啥工具包也都一样,得自己理清在操作哪一层,用纸笔去画一画记一记会更清晰。具体代码我就不放了,因为放了也看不懂,包括我自己。算了,还是放一段吧,这是我写的小Demo,不是很注意代码规范。

image-20210426001839640.png

这也是最让我神魂颠倒的一段代码,真的写的是头晕眼花,不过所幸达成了目的。

五、总结

  • .idea文件夹下还有很多配置是特别有用的,可以说没有.idea文件夹就不会有你的项目,该文件夹下还有很多非常有用的配置文件,像是module.xml他决定了你的项目是个什么样的项目,是 Java 项目呢还是插件项目或者是Spring项目等,并且还与另一个常被我们忽视的文件project name.iml关联很大。
  • 善于思考会让工作变得有趣

文章没有经过严格的考证,而且没有对.idea文件夹下的文件进行一一解析,盼各位大佬提问补充斧正~