如何将所有包名称重命名为小写
How to rename all package names to lowercase
我有一个大型项目,其中包含许多 CamelCase 包。我想将它们全部重命名为小写,例如:
main.MyPackages.Utils
到 main.mypackages.utils
best/fastest 这样做的方法是什么?
- 我考虑的第一种方法是使用 IDE(Eclipse
在我的例子中),但这是很多工作,并不总是有效
因为在某些情况下它认为包已经存在。
- 第二种方法是自己编写一个程序来处理
这个。该程序应将所有文件夹重命名为小写并替换
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 程序执行以下步骤:
- 在所有目录的第一次迭代中,它将所有文件夹复制到一个只有小写名称的新目录(第一个子包被完全重命名以防止 Windows 主机上出现问题)。
- 然后程序开始对新目录进行第二次迭代,并重命名 Java 文件中的所有导入包。对于大多数导入来说,这非常简单,但我需要使用反射来正确重命名 Java 类 中的静态导入和枚举导入,例如
import my.package.MyClass.MyEnum
。
- 该程序的下一步是重命名在 Eclipse 中发现的所有其他旧包名称,例如TestNG XML 个文件,...
- 最后一步是删除旧文件夹。
程序的运行时间约为每个分支 2 分钟。更新后的项目编译,我没有遇到任何问题。
我没有添加任何代码,因为该程序仅适用于此项目。也许它仍然对某人有帮助。
我有一个大型项目,其中包含许多 CamelCase 包。我想将它们全部重命名为小写,例如:
main.MyPackages.Utils
到 main.mypackages.utils
best/fastest 这样做的方法是什么?
- 我考虑的第一种方法是使用 IDE(Eclipse 在我的例子中),但这是很多工作,并不总是有效 因为在某些情况下它认为包已经存在。
- 第二种方法是自己编写一个程序来处理 这个。该程序应将所有文件夹重命名为小写并替换 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 程序执行以下步骤:
- 在所有目录的第一次迭代中,它将所有文件夹复制到一个只有小写名称的新目录(第一个子包被完全重命名以防止 Windows 主机上出现问题)。
- 然后程序开始对新目录进行第二次迭代,并重命名 Java 文件中的所有导入包。对于大多数导入来说,这非常简单,但我需要使用反射来正确重命名 Java 类 中的静态导入和枚举导入,例如
import my.package.MyClass.MyEnum
。 - 该程序的下一步是重命名在 Eclipse 中发现的所有其他旧包名称,例如TestNG XML 个文件,...
- 最后一步是删除旧文件夹。
程序的运行时间约为每个分支 2 分钟。更新后的项目编译,我没有遇到任何问题。
我没有添加任何代码,因为该程序仅适用于此项目。也许它仍然对某人有帮助。