我该如何在IntelliJ IDEA中更改顶层包名?

66
我有一个包结构:com.report.domain.model
我想把它改为com.reporting.domain.model。当我选择 "重构" → "重命名" 在包com.report.domain.model上时,我只看到一个重命名'model'的选项。我试过在"项目"视图和"包"之间切换,但没有效果。我知道如何在Eclipse的导航器视图中进行此更改,但在IntelliJ IDEA中该怎么做?
2个回答

90

57

更改完整包名:

用户jkovacs已经回答了这个问题,但我会更详细地介绍一下。比如,如果您想将com.example.app更改为my.awesome.game,则需要执行以下操作:

  1. 项目面板中,单击小齿轮图标(Gears icon

  2. 取消选中 Compact Empty Middle Packages 选项:

    Compact Empty Middle Packages

  3. 现在,您的包目录将被分解成各个子目录。

  4. 逐个选择要重命名的每个目录,并:

    • 右键单击它
    • 选择Refactor
    • 点击Rename
    • 在弹出窗口中,选择Rename Package而不是Rename Directory
    • 输入新名称并点击Refactor
    • 等待一分钟让Android Studio更新所有更改
    • 注意:在Android Studio中重命名com时,可能会出现警告。这种情况下,选择全部重命名

      Enter image description here

  5. 现在打开你的Gradle Build Filebuild.gradle - 通常是appmobile)。将applicationId更新为您的新包名称,并同步Gradle,如果还没有自动更新:

    重构目录

  6. 完成! 无论如何,Android Studio需要使这个过程更加简单。


你说得没错,它需要变得更简单。四年过去了,我们还在等待……今天我进行了一个三级包重命名(我们称之为A.B.C到D.E.F),我发现(a)对类“R”的引用没有更新,(b)一些XML文件中的引用被更改为“D.B.C.A.B.C”,有很多东西需要手动更新。我猜因为人们不经常这样做,所以他们不想花太多精力使其更加顺畅。 - Adam Burley
其实我认为选择“全部重命名”不正确。我的项目有多个模块,我试图仅在其中一个模块中重命名“com”(例如,模块1具有com.foo,模块2具有com.bar,我想将模块1更改为org.baz,而不影响模块2)。当我选择“全部重命名”时,所有的com包都被重命名了,而不仅仅是我点击重构的模块中的包。当我再次进行操作并选择“当前重命名”时,它正常工作了。 - Adam Burley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接