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

How to rename all package names to lowercase

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

main.MyPackages.Utilsmain.mypackages.utils


best/fastest 这样做的方法是什么?

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

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

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

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

  • 右键单击包 main.MyPackages.Utils 和 select 重构 -> 重命名...
  • 输入main.mypackages2.utils2(有分包勾选Rename subpackages)点击确定

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

正在使用 Eclipse 重命名所有包:

我尝试使用 Eclipse 重命名包。很快我就遇到了这种方法的问题。我本地分支中的 master 分支的第一次合并再次恢复了所有旧包。当时的想法是在周末没有人参与该项目时重命名这些包。但是每个分支仍然需要 5+ 小时,我必须至少更改主分支和最后一个发布分支以防止合并冲突。我意识到这对我来说不起作用。

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

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

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

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


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