问题
I'm currently working in a big java project with quite a few submodules that are worked on by different teams. Some of these teams are building the "framework", others are building the "application" based on the framework.
When the framework guys move or rename a class, the applications guys get compile errors wherever they are using a refactored framework class. Is there a way in Eclipse (Galileo Release) to record the change and update the references in another workspace?
What I've tried so far is creating a refactoring script during the rename refactoring, but when I try to apply that script to another workspace, it fails with The refactoring 'Rename Type' (org.eclipse.jdt.ui.rename.type) cannot be performed, since its input 'xxx.TestClass" does not exists
. Well, it does not exist (anymore) alright, but what I want is for all references for xxx.TestClass
in my project to be changed to xxx.MyRenamedTestClass
. Is there a way in Eclipse to do this with built-in functionality or an existing plugin or do I have to write one myself?
Thanks for your help!
EDIT: By now I found out that the "Migrate JAR"-Plugin provides the functionality I am looking for, although we build our JARs with Maven, not Eclipse. I'm going through the source code now to find out what parts I can reuse.
回答1:
Answering my own question to get some closure here.
The easiest way to do it is to use the Migrate JAR File...
refactoring which uses a refactoring script in META-INF
called REFACTORINGS.XML
. You can get a JAR with this included automatically by using Export JAR
in Eclipse. We build with Maven and thus just do Refactoring->Create Script...
and put it into the appropriate position in the JAR.
The JDT-internal code that Migrate JAR executes creates Stubs for the source classes in a temporary source folder, so it actually executes the refactoring first and then updates the references. The user never gets to see these temporary files.
来源:https://stackoverflow.com/questions/10878091/eclipse-record-and-apply-move-and-rename-refactorings-to-another-workspace