一、背景
有的时候,我们希望intellij idea 能像 eclipse 一样有workspace的概念,能在一个workspace目录里面引入多个项目,如:
我们有项目a、项目b,现在的项目几乎都是springboot项目(即maven项目),所以就假设他们都是springboot项目,idea设计的时候一般是单独打开a和b,我们现在希望有类似于 "workspace" 的概念,把a和b都纳入其中。
注意: 需要注意的是,a和b可以是无关联的。正常情况下我们会创建一个目录作为parent,然后有a和b模块,不过我们这里讨论的不一样,a和b可以是无关联的、不同业务的、甚至不同系统的项目。
二、怎么做?(会在末尾列出一些网上其他文章不可行的)
步骤1:
创建一个文件夹f (叫什么名随意),将a和b都剪切到 f,创建这个目录的目的只是为了让idea打开这个目录,重新创建只是为了目录干净一些。
如果之前已经用idea打开过a和b,建议将a和b下的idea项目配置文件删掉以免产生干扰
即删掉 .idea 目录以及 *.iml,注意*.iml不一定存在,新版的idea不产生*.iml文件了,新版所有idea的项目配置文件都在.idea目录里头
步骤2
用idea打开上面创建的f,这时候idea其实会检测,如果检测到你有maven的scripts(其实就是pom.xml之类的maven结构),会提示是否加载a和b为maven项目,选择是即可。
如果你错过了,也没关系,我们只要找到项目的 pom.xml,右键它并选择加载为maven项目即可(大概的菜单名不记得了,差不多这个意思),最笨的方法一个个模块这么操作即可。
操作完毕完第一个后其实你就能看到右侧有 "Maven" 的了(不知道叫什么,叫视图还是叫窗口还是叫window),这时你就开始轻车熟路了。
步骤3
各种依赖的下载,点击右侧的Maven的视图,刷新一下,让依赖下载一下。
根据自身项目的特殊性,有些甚至需要install一下a或(和)b。
这个步骤没有统一的万金油的操作方法,总而言之就是让你的代码能编译通过,能启动起来,至少写个Test类和helloworld的main方法能运行起来。
有的时候有些目录死活识别不了为soruce/resource/test/Gernerated soruce目录/exclude,你就手工mark directory as一下。
- src/main/java 通常是java代码目录
- src/main/resources 通常是java代码的资源目录(配置文件)
- src/test/java 通常是测试目录
- src/test/resources 通常是测试用到的资源配置文件的目录
- target 通常你看到的就是橙色的目录,其实就是excluded的目录
- target/generated-soruces 工具或插件生成的java源码 (是否生成在这个路径通常是配置决定,这路径是我遇到的情况)
- target/generated-test-sources 同上,只不过生成的是测试的源码文件
有时候确实需要手工标记为 Generated Sources Root,我遇到过这种情况。
这目录通常是有些源码文件是由工具插件生成的,java maven里专门有一些插件是可以根据配置文件的定义生成java类(*.java文件),通常是用于生成一些接口的出入参的entity实体类,以方便给其他系统调用。
三、没法解决的一些问题
上面的方式其实也可以看到其实跟Eclipse的有些东西是有区别的
-
搜索问题
一搜就搜整个 "workspace",要单独搜a或者b项目,要求只搜a里的东西只能改用搜a目录的方式,无法通过将b暂时标记为excluded来达到排除b的目的。(eclipse里是可以将不想关的先关闭的,idea里没这个功能)。当然idea可以搜全局了,这也打破了要一个个单独在a和b里头搜东西
-
External Libary 的问题
左边的依赖列表其实是混合了a和b的,你无法知道这个依赖是a用的还是b用的还是a和b都有用。当然,你可以从右边的Maven视图里单独查看a或b都有哪些依赖。
四、一个目录里既有前端代码又有后端代码,这是本文可以解决的另外的问题
上面的情况是a和b都是java的项目。假设某个目录my-project下面有 front-end/back-end/auto-test目录,其中front-end是前端react或者vue的,back-end是java springboot的,auto-test是java的(selenium+chrome driver+BDD/cucumber)
因为idea的旗舰版是支持编辑各种语言的,比如java/react/vue/Python等,用idea旗舰版将my-project导入,这样子就会比较方便全栈工程师一遍改前端代码一边改后端并且还兼任测试的工作写自动化测试。
怎么做?其实跟上面的方法是一样,只是上面一个目录下全是java的,现在既有java也有前端代码。
五、网上其他文章不可行的
可能是因为版本还是什么原因,不可行,
https://blog.csdn.net/weixin_30409927/article/details/98039806
比如这篇文章提到在idea左下角可以打开 Maven Projects,反正我的idea是没有这个菜单,也许是博客里用的idea的版本旧一些的问题?