昆山建设企业网站,wordpress手机接口,wordpress主题开发网站,网站建设 技术团队介绍文章目录 引言一、多项目窗口模式的便利1.1 源码 debug 二、多项目窗口模式的弊端三、多项目窗口的版本管理四、单项目、多项目窗口模式转换 引言
idea编辑器有两种窗口模式#xff0c;一种是单项目窗口#xff0c;另一种是多项目窗口。 我个人使用较多的是单项目窗口#… 文章目录 引言一、多项目窗口模式的便利1.1 源码 debug 二、多项目窗口模式的弊端三、多项目窗口的版本管理四、单项目、多项目窗口模式转换 引言
idea编辑器有两种窗口模式一种是单项目窗口另一种是多项目窗口。 我个人使用较多的是单项目窗口即一个微服务项目或单体项目一个独立的idea窗口。此模式好处有两方面一是开发者可以更专注特定的工程不会因为工程太多产生混淆二是在mave依赖自动刷新开启时可以较快的打开工程避免窗口内太多的工程刷新Maven依赖而产生卡顿。
但是最近在开发多依赖项目时在两三个项目之间切换也确实不太方便。于是使用了一下多项目窗口模式整体感官还算不错。所以未来我的编程模式可能会依此有所变化对于独立的功能开发我可能依然倾向于使用单窗口模式而对于需要同时修改多个项目而且还彼此有所依赖的情况我则更多的使用多窗口模式。
当然在多窗口模式开发完成之后也可以将窗口内的其他项目 unlink 轻松去掉不会影响任何代码逻辑。
一、多项目窗口模式的便利
1.1 源码 debug
这一点我要强烈推荐
如果你的项目中A依赖B即A项目使用了B项目中的方法、属性、类等信息那么在需要同时开发A、B两个项目时B需要先 mvn install 到本地仓库然后A项目 reload B的依赖才能生效。
实际上在单窗口模式下debug如果从A项目进入到B中的方法我们看到的实际上是一堆编译后的class 文件断点也只能打在 class 文件中。
而使用多窗口模式A项目的代码可以直接链接B项目的源码即编译前的文件debug时也可以直接将断点打在B项目的源文件中方便快速发现问题修改。 这一点在实际debug A B 两个项目时着实提升了不小的工作效率比起习惯的单窗口模式直接将断点打在源码上的效果肯定要比打在class 文件中的感官要好很多。 注意需要着重说明的是项目的依赖本身没有变化。即A项目还是依赖B项目的class文件这点是maven或者说是Java 本身的依赖机制决定的。也就是说在运行时A、B 项目实际上都是运行的class文件debug看到的数据和调用链只是开发工具通过jvm相关协议将JVM的内存如 堆、栈、计数器、方法区等数据映射到对应的源码中。
所以我们debug时确实可以直接跳转到 B 项目的源码但如果你修改了B的代码若想生效请记得重新 mvn clean install否则你 debug 的代码信息只是上一次 install 的class文件就会出现debug断点无效的情况如下图所示
二、多项目窗口模式的弊端
简单说项目太多如果都是一些不需要开发的项目idea启动压力大同时开发时混乱不堪容易出错。
三、多项目窗口的版本管理 如上图所示左上角的project视图有两个maven工程procurement-contract 合同工程简称C工程procurement-contract-framework 模板工程简称 T 工程。合同依赖模板即 C 依赖 T。
左下角git主窗口会将所有的工程分支展示到 History 中上图中 913 是T工程分支912是C工程分支。另外如果希望只查看某个项目的 git history可以在左上project 视图中选中项目名称右键找到 Git–show history或直接找到工具栏上的 show histroy 按钮。
右下角的当前分支提示信息上图中展示的是 913分支因为主窗口打开的文件是C工程即procurement-contract 合同工程。因此当我们切换主窗口的文件时右下角的当前分支提示会定位到打开文件所属工程项目的分支。
对于修改的文件如下图commit 视图所示 切换选中文件并不会改变当前分支提示信息当前分支提示只随主窗口打开文件而改变。 不过为了防止不同的项目文件commit时出现错乱当然git肯定不会错乱错乱的肯定是人建议选中文件后打开最上方的路径提示此路径提示会随选中的文件动态变化然后双击路径最后的文件在主窗口打开查看当前分支提示信息避免提交到错误的分支上。
四、单项目、多项目窗口模式转换
添加其他项目时在maven视图中找到加号如下图所示点击添加maven项目 去除其他项目时maven视图中选中要去除的项目右键点击 Unlink 选项即可。只是解除当前窗口与此项目的链接并不会真正的删除项目就算有未提交代码也不会丢失。 建议在有依赖关系的多个项目中使用多项目窗口完全独立或不相关的项目建议使用单项目窗口模式只关注具体的业务开发。