Eclipse - 记录并应用移动并将重构重命名为另一个工作区

时间:2012-06-04 08:01:05

标签: java eclipse refactoring automated-refactoring

我目前正在开发一个大型java项目,其中有很多子模块由不同的团队处理。其中一些团队正在构建“框架”,其他团队正在构建基于框架的“应用程序”。

当框架人员移动或重命名一个类时,应用程序人员无论在哪里使用重构的框架类都会遇到编译错误。是否有一种方法可以在 Eclipse Galileo Release )中记录更改并更新其他工作区中的引用?

到目前为止我尝试过的是在重命名重构期间创建重构脚本,但是当我尝试将该脚本应用到另一个工作区时,它会失败并显示The refactoring 'Rename Type' (org.eclipse.jdt.ui.rename.type) cannot be performed, since its input 'xxx.TestClass" does not exists。好吧,它不存在(不再)好了,但我想要的是将我项目中xxx.TestClass的所有引用都更改为xxx.MyRenamedTestClass。有没有办法在Eclipse中使用内置功能或现有插件来完成此操作,还是我必须自己编写一个?

感谢您的帮助!

编辑:到目前为止,我发现“Migrate JAR”-Plugin提供了我正在寻找的功能,尽管我们使用Maven而不是Eclipse构建JAR。我现在要查看源代码,找出可以重用的部分。

1 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题以获得一些关闭。

最简单的方法是使用Migrate JAR File...重构,该重构使用名为META-INF的{​​{1}}中的重构脚本。您可以使用Eclipse中的REFACTORINGS.XML自动获取包含此内容的JAR。我们使用Maven构建,因此只需Export JAR并将其放入JAR中的适当位置。

Migrate JAR执行的JDT内部代码为临时源文件夹中的源类创建Stub,因此它实际上先执行重构,然后更新引用。用户永远不会看到这些临时文件。