4

我有一个大型的单片 Web 应用程序,我希望将其分解为更小的模块。作为第一步,我想更改当前看起来像这样的包层次结构:

 - com.companyname.project
  - dao
     - bean
         - booking // possibly containing more sub packages
         - core   
         ... etc etc (there are a bunch of others as well)
     - service
         - booking // possibly containing more sub packages
         - core   
         ... etc etc  
  - logic
     - bean
         - booking // possibly containing more sub packages
         - core   
         ... etc etc
     - service
         - booking
         - core   
         ... etc etc
  - web
     - bean  // same substructure as above...
     - service  // same substructure as above...
     - taglib  // same substructure as above...
     - util

booking如果包结构例如用作下面的包名称,我希望它com.companyname.project

现在我想知道是否有一种工具可以例如使用简单的正则表达式为我进行重组。

例如
com.companyname.project.dao.bean.booking
会变成:
com.companyname.project.booking.dao.bean

com.companyname.project.dao.service.booking
会成为:
com.companyname.project.booking.dao.service

我可以使用 Eclipse 并拖放包,但我正在寻找可以在我参与最少的情况下做到这一点的东西,因为它会非常重复。

4

2 回答 2

1

您可以使用任何具有重构兼容性的 Java IDE:

  • IntelliJ IDEA(最好的重构支持)。它有开源社区版和闭源终极版。
  • Eclipse(开源)
  • NetBeans(开源)

我不建议您使用正则表达式搜索/替换,因为它容易出错。

于 2012-03-01T12:40:13.427 回答
-1

为什么不使用 Java 本身?我相信在您当前的场景中,您可以轻松编写一个小型 Java 程序来执行您正在谈论的确切重构,并确保在此过程中不会遗漏任何内容。

您可以编写一个采用“pre”(即“com.companyname.project.dao.bean.booking”)和“post”(即“com.companyname.project.booking.dao.bean”)参数的方法并复制“pre”结构适当地转换成“post”结构。

在这个程序中,我设想了一个 main 方法和一个“convertPackage(pre,post)”方法。然后,您可以拥有一组“前”和“后”结构,并循环将它们转换为新结构。最好将此复制到某种临时目录中,而不是将原始目录作为附加的安全措施。

也许我的想法在这方面太简单了,但我可以看到一个程序可以在每天 1/2 或更短的时间内完成此重构。

您将获得额外的好处,即确切地了解正在发生的变化,而不是这些自动化工具带来的不安全感,这些自动化工具可能适合您,也可能不适合您……

于 2012-03-28T12:58:22.707 回答