我正在尝试编写Eclipse(Java)插件。
如果源代码有变化(例如错误修正),插件应该意识到eclipse-Project的哪些文件被更改(为了运行受影响的JUnit-Tests)。我打算通过SVN Syncronisation-Status来实现这一点。
因此,如果文件与存储库中的“相同”文件不同(传出更改),我知道该文件已被编辑(当然)。
我知道我可以使用org.eclipse.team。* package / library。
我还发现我可以使用此软件包的“SyncInfo”。
但我真的不知道如何实现这个。
我想我必须定义一个“IResource”或“IProject”来为我的插件提供信息,这是我想要测试的eclipse项目。
我无法在互联网上找到太多有用的信息。
答案 0 :(得分:0)
您没有定义IResource
或IProject
。相反,您应该使用Workbench
类来获取一个:
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject project = workspace.getRoot().getProject(...);
IJavaProject javaProject = JavaCore.create(project);
现在,您可以遍历链接到项目的所有资源。
也就是说,实现IncrementalProjectBuilder
可能会更好,让Eclipse告诉你改变了什么,这样你就可以简单地运行这些元素的单元测试。这应该让您开始使用增量构建器:Eclipse Help: Incremental project builders
这样,您根本不需要处理颠覆;对项目的任何更改,无论是谁造成的,都会触发您的构建器,然后它可以决定如何处理修改。
一个好方法可能是收集测试以在队列中运行并让后台工作程序处理此队列。
答案 1 :(得分:0)
我一直在寻找这个1个月了。我试图为eclipse编写一个插件,它能够读取项目的变更集(存储库的“工作副本”)。
我现在所做的是一个丑陋的解决方法。
我使用Runtime.exec()运行cmd-command / Shell-命令。如果安装了svn-commandline客户端,则可以键入svn status -v -u它会为您提供工作副本的所有文件列表以及变更集信息。
您可以解析列表以查找以“M”开头的所有行 - 用于“已修改”以获取已更改文件的路径。