【问题标题】:How to rename packages and classes programmically?如何以编程方式重命名包和类?
【发布时间】:2021-02-23 12:23:44
【问题描述】:

我的代码库分散在数十个存储库中。

我想标准化包和类的名称,但是在 IDE 中手动完成它太乏味了,因为我需要一个基于字典的跨存储库重命名。

有没有办法以编程方式跨多个存储库重命名类和包?

不同语言的类似情况:https://metacpan.org/pod/App::EditorTools

【问题讨论】:

  • 您到底期待什么?在 Eclipse 中,您可以在包之间复制/粘贴类,并且所有引用都会自动更新。重命名类也是如此。
  • 使用力量 Luke ... 抱歉,使用你的 IDE ...是我给出的最佳建议,因为以编程方式实现某些东西将很难开发以修复所有导入等。也许是服务加载程序等。
  • @khmarbaise 在 IDE 中进行操作是我手动的意思。我有 17 个存储库,并且想做基于字典的重命名和包重组。仅使用 IDE 将花费数小时
  • 重命名包是不够的。您必须更改所有导入...还有配置等,这是由 IDE 完成的... Ok 17 repos 有多少代码?班数?好的..几个小时?当然......但是实现和测试一个工具也需要几个小时......在IDE中您已经检查过编译等?我不确定实现一个工具会比通过 IDE 手动执行更快...???...

标签: java maven automation refactoring


【解决方案1】:

Eclipse 和几乎所有其他主要 IDE 都可以轻松地做到这一点。将项目加载到 IDE 中(如果项目是由 maven 或 gradle 构建的,大多数人可以读取项目,只需说你想“导入现有的 maven java 项目”或类似的东西,可能在安装 maven 和/或 gradle 插件之后 -如果它不是由此类工具构建的项目,则只需导入现有的 java 项目并告诉 eclipse 源文件所在的位置。

然后,右键单击包,选择重构/重命名,重命名它,eclipse(或intellij,或任何其他主要的java IDE)将重命名目录,更新其中每个源文件中的包语句,并更新所有导入或任何其他引用,甚至会搜索包含该确切名称的字符串,以防您进行奇怪的反射恶作剧并告诉您这些可能也需要更新。

这不是完全程序化的,但这听起来比实际使用更容易和更快。 ecj 或编写将在没有用户界面的情况下运行的 Eclipse 应用程序来应用这些重构脚本。

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2011-11-02
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多