Java在Eclipse环境下调用Subclipse接口完成SVN操作(附源码)

xiaoxiao2025-01-06  10

[color=blue][b]Java在Eclipse环境下调用Subclipse接口完成SVN操作(附源码)[/b][/color] 在Eclipse环境中使用SVN还是比较简单的, 因为已经Subclipse已经对SVN的操作进行了封装,只需要给你的Eclipse应用添加Subclipse,然后你自己的插件项目再对Subclipse进行依赖即可。具体实现如下: [color=cyan][b]一. 给Eclipse添加Subclipse插件[/b][/color] Subclipse下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 [color=cyan][b]二. 新建EclipseRCP项目[/b][/color] [color=cyan][b]三. 给Plugin项目添加依赖的Subclipse插件[/b][/color] a) org.tigris.subversion.clientadapter b) org.tigris.subversion.clientadapter.javahl c) org.tigris.subversion.clientadapter.javahl.win32 d) org.tigris.subversion.subclipse.core [color=cyan][b]四. 关键类说明[/b][/color] a) [b]SVNRepositoryInfo[/b] 我自己定义的一个用于放置SVN信息的一个JavaBean b) [b]SVNRepositoryUtil[/b] 我自己定义的一个调用SVN的Util类 c) [b]ISVNClientAdapter[/b] 在客户端操作SVN的具体的类 d) [b]SVNUrl[/b] 代表SVN地址的一个类 e) [b]ISVNNotifyListener[/b] 对SVN执行的每一步操作的监听 f) [b]JhlClientAdapterFactory[/b] Subclipse用于注册JHL依赖的dll的类 [color=cyan][b]五. 关键代码说明[/b][/color] JhlClientAdapterFactory.setup(); 该代码用于注册JHL所依赖的一些dll文件,所以,该方法只可以执行一次,dll注册完成后不可再执行,否则会有异常。具体JHL依赖的dll文件可以见: eclipse\plugins\org.tigris.subversion.clientadapter.javahl.win32_1.X.X.X文件夹 String bestClientType = SVNClientAdapterFactory.getPreferredSVNClientType();ISVNClientAdapter svnClient = SVNClientAdapterFactory.createSVNClient(bestClientType); 其实这段代码的含义是说,找到Subclipse可使用的SVNClient。 这里所谓的可用的SVNClient指的是:Subclipse提供了两种对SVN操作的liberary,一个是JHL,对应于org.tigris.subversion.clientadapter.javahl插件,一个是SVNKIT,对应于org.tigris.subversion.clientadapter.svnkit_1.6.0.1.jar插件。但事实上,SVNKit不可用,因为该插件没有对外Export任何Package。 svnClient.addNotifyListener(new SVNNotifyListener());public class SVNNotifyListener implements ISVNNotifyListener { public void setCommand(int cmd) { } public void logMessage(String message) { System.out.println("Message :" + message); } public void logCommandLine(String message) { System.out.println("CommandLine :" + message); } // …} [b]ISVNNotifyListener[/b]是需要去实现的对SVN操作的监听事件。比如,在一次commit过程中,可能提交了很多文件,删除了几个文件,更新了几个文件,那么对于这样的一个过程中的小事件提供监听的功能。 [b]SVNRevision [/b] 这是用于表示Svn版本的类,比如HEAD,BASE,或者文件后面的数字版本,或者时间版本 等。 [b]方法参数中的recurse [/b] 指的是,如果是一个文件夹是否需要将其下面的所有子文件夹、子文件一起遍历出来,或者一起进行操作。 SVNUrl moduleUrl = new SVNUrl(repositoryInfo.getUrl() + moduleName);svnClient.checkout(moduleUrl, destPath, revision, true); 这段就不解释了,很容易明白。 更详细的代码请下载源代码。 源代码基于Eclipse3.4,Subclipse1.6。在Eclipse3.3中进行少量修改也能使用。 项目基于Eclipse RCP,运行iwoo.svn.product,在ToolBar点击Checkout按钮即可在Console查看到输出结果,比如下面的日志: CommandLine :checkout http://iwoo.googlecode.com/svn/trunk/temp.withsvn -r HEAD --depth=infinity --forceMessage :A C:/A/B/C/.classpathStatus of C:\A\B\C\.classpath has changedMessage :A C:/A/B/C/.projectStatus of C:\A\B\C\.project has changed
转载请注明原文地址: https://www.6miu.com/read-5022242.html

最新回复(0)