重命名项目
本文最后更新于 2024年8月30日 下午
出于将苍穹外卖化为己有的阴暗目的,我决定将项目中的sky-take-out、sky、itcast、heima等字样统统修改,去除黑马元素和苍穹元素。此举可能造成一系列路径问题,故开帖记录
重命名基于黑马官方资料day01的后端初始代码,在跟完教程开发完成后开始重构。
模块名
首先,修改模块名,主模块sky-take-out改为my-take-out,idea显示的是模块所在文件夹的名称,所以还要修改文件夹名,修改之后就需要重新用IDEA打开项目。
然后,下面三个子模块的sky都改为my,此时refactor出现了重构选项,可以一键重构模块及其文件夹名,还能将所有位置的名字都修改了(先查找,然后修改全部),子模块名主要存在于父模块的pom文件聚合工程中,以<module>
包括。
至此模块名修改完成,注意重新加载maven,更新子模块的pom文件
包名
双击shift搜索“sky”字样,注意到项目所有com包下级包名都是sky,都改成my
为什么java项目的包要像域名翻转一样?
java诞生时,互联网域名系统已经很成熟,开发者使用所属组织域名可以防止重复,同时标识项目来源
com:commercial 商业组织、org:organization 非盈利组织、gov、edu……
由含义来看,大包名下的小包名依次表示:所属组织、用途。所以com下的sky改为my可表示由自己开发,意义正确,符合规范
重命名包时也会有全局重命名选项,此时不能勾选"在注释和字符串中搜索",因为会有只读文件已经获取旧包名sky,类似于缓存,无法对其写。而不勾选"在注释和字符串中搜索",意味着后续还需要全局搜索来修改残余的"sky"。
groupId
然后,修改pom文件中的groupId,由于groupId可以不与实际包名一致,所以不会报错。先修改父工程的pom其中的groupId,然后刷新maven时就会报三个子模块的错<parent>
下的父工程指定出了问题,一个一个修改好。还需注意,server模块依赖了common和pojo模块,还需要改server的<dependency>
中的groupId。
其他
然后,ctrl+shift+f
全局搜索,再接ctrl+shift+r
全局替换,直接把所有sky全变成my。
为什么不直接全局搜索替换?
得先改文件夹名,然后才能全局搜索替换,不然会出现三个my-xxx的空子模块,原来的模块还是用文件夹名,只是多了个my-xxx的别名,父工程的pom是找不到这三个子工程的。
包名也没办法全局替换,根本不会被搜索到,只能一个一个重命名,还得注意连带文件夹。
groupId部分可以跳过,直接全局替换