如何将所有程序包名称重命名为小写

时间:2019-11-11 07:15:46

标签: java eclipse package refactoring

我有一个大型项目,其中包含许多CamelCase软件包。我想将它们全部重命名为小写,例如:

main.MyPackages.Utilsmain.mypackages.utils


最好/最快的方法是什么?

  1. 我正在考虑的第一种方法是使用IDE(Eclipse 以我为例),但这是很多工作,而且并不总是有效 因为在某些情况下,它认为该软件包已经存在。
  2. 第二种方法是自己编写一个程序来处理 这个。该程序应将所有文件夹重命名为小写并替换 Java文件中所有带有小写包的import语句。 听起来比实际要容易,因为重命名/移动非空目录需要一些额外的工作,并且在Windows上无法使用Java用小写名称创建新目录。

有没有比上述两种方法更好的方法?如果没有,我将采取第二种方法。也许使用UNIX OS会更好。

3 个答案:

答案 0 :(得分:1)

使用Eclipse重命名所有软件包:

我试图使用Eclipse重命名软件包。很快我就遇到了这种方法的问题。我的本地分支中master分支的第一次合并再次还原了所有旧软件包。当时的想法是在没有人参与项目的周末重新命名软件包。但是每个分支仍然需要 5+小时,并且我不得不至少更改master和last release分支,以防止合并冲突。我意识到这不适用于我的情况。

使用自定义Java程序重命名所有软件包:

我编写了一个Java程序,该程序执行以下步骤:

  1. 在所有目录的第一次迭代中,它会将所有文件夹都复制到只有小写名称的新目录中(第一个子软件包已完全重命名,以防止Windows主机出现问题)。
  2. 然后程序开始通过新目录进行第二次迭代,并重命名Java文件中的所有导入包。对于大多数导入来说,这很简单,但是我需要使用反射来正确重命名Java类(例如import my.package.MyClass.MyEnum)中的静态导入和Enums的导入。
  3. 程序的下一步是重命名Eclipse中发现的所有其他旧包名称实例,例如TestNG XML文件,...
  4. 最后一步是删除旧文件夹。

程序的运行时间约为每个分支2分钟。更新后的项目可以编译,我没有遇到任何问题。


我没有添加任何代码,因为该程序仅适用于该项目。也许它仍然可以帮助某人。

答案 1 :(得分:0)

就我而言,我使用IntelliJ Idea IDE,并且提到的重构要容易得多。 您只需要右键单击并按照您提到的方式更改软件包名称,这将在每个使用软件包的地方更新软件包名称。 让我知道它是否有效。 See the screenshot for reference

答案 2 :(得分:0)

这可以使用中间包名称通过两个步骤执行:

  • 右键单击软件包main.MyPackages.Utils,然后选择Refactor-> Rename ...
  • 输入main.mypackages2.utils2(如果有子软件包,请选中Rename subpackages),然后单击“确定”

现在重复相同的操作,并将main.mypackages2.utils2重命名为main.mypackages.utils