依赖包

<dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit</artifactId><version>1.10.1</version>
</dependency>

svn路径等配置类

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;@Getter
@Setter
@ConfigurationProperties("svn.resource")
public class SvnConnectProperties {private String url;private String remote;private String name;private String password;
}

操作svn工具类


import com.xxx.Exception.HZException;
import com.xxx.enums.HttpStatus;
import com.xxx.ExceptionUtils;
import com.xxx.config.SvnConnectProperties;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.tmatesoft.svn.core.*;
import org.tmatesoft.svn.core.auth.BasicAuthenticationManager;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.ISVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;import java.io.*;
import java.util.Collection;@Configuration
@AllArgsConstructor
@EnableConfigurationProperties(SvnConnectProperties.class)
public class SvnHandler {private final SvnConnectProperties connectProperties;private final Logger logger = LoggerFactory.getLogger(this.getClass());public SVNRepository getRepository(String url, String name, String password) {SVNRepository repository = null;try {repository = DAVRepositoryFactory.create(SVNURL.parseURIEncoded(url));ISVNAuthenticationManager authManager = new BasicAuthenticationManager(name, password);repository.setAuthenticationManager(authManager);} catch (SVNException e) {ExceptionUtils.handlerException(e, logger);}return repository;}public SVNRepository getRepository() {return getRepository(connectProperties);}public SVNRepository getRepository(SvnConnectProperties config) {SVNRepository repository = getRepository(config.getUrl(), config.getName(), config.getPassword());SVNNodeKind kind = checkPath(repository, "");return (SVNNodeKind.UNKNOWN == kind || SVNNodeKind.NONE == kind) ?getRepository(config.getRemote(), config.getName(), config.getPassword()) : repository;}public String getActiveUrl() {SVNRepository repository = getRepository(connectProperties.getUrl(), connectProperties.getName(), connectProperties.getPassword());SVNNodeKind kind = checkPath(repository, "");return (SVNNodeKind.UNKNOWN == kind || SVNNodeKind.NONE == kind) ? connectProperties.getRemote() : connectProperties.getUrl();}public SVNUpdateClient getSvnUpdataClient() {setupDavLibrary();ISVNOptions options = SVNWCUtil.createDefaultOptions(true);SVNClientManager manager = SVNClientManager.newInstance((DefaultSVNOptions) options, connectProperties.getName(), connectProperties.getPassword());SVNUpdateClient client = manager.getUpdateClient();client.setIgnoreExternals(false);return client;}public Collection<SVNDirEntry> listEntries(String path) {setupDavLibrary();return listEntries(getRepository(), path);}public SVNNodeKind checkPath(SVNRepository repository, String path) {SVNNodeKind result = SVNNodeKind.UNKNOWN;try {result = repository.checkPath(path, -1);} catch (SVNException ignored) {}return result;}public SVNNodeKind checkPath(String path) {setupDavLibrary();return checkPath(getRepository(), path);}private Collection<SVNDirEntry> listEntries(SVNRepository repository, String path) {Collection<SVNDirEntry> result = null;try {result = repository.getDir(path, -1, null, (Collection) null);} catch (SVNException e) {ExceptionUtils.handlerException(e, logger);}return result;}public void setupDavLibrary() {DAVRepositoryFactory.setup();}public SvnConnectProperties getConnectProperties() {return connectProperties;}public void getOutputStream(SVNRepository repository, String path, SVNProperties properties, OutputStream outputStream) {try {SVNNodeKind nodeKind = repository.checkPath(path, -1);if (nodeKind == SVNNodeKind.NONE) {throw new HZException(HttpStatus.error.getCode(), path + "不存在");} else if (nodeKind != SVNNodeKind.FILE) {throw new HZException(HttpStatus.error.getCode(), path + "不是文件");}repository.getFile(path, -1, properties, outputStream);} catch (SVNException e) {ExceptionUtils.handlerException(e, logger);}}public boolean downloadFile(File file, String path) {SVNProperties properties = new SVNProperties();OutputStream outputStream = null;try {if (!file.exists()) {file.createNewFile();}outputStream = new FileOutputStream(file);setupDavLibrary();getOutputStream(getRepository(), path, properties, outputStream);} catch (IOException e) {ExceptionUtils.handlerException(e, logger);} finally {if (null != outputStream) {try {outputStream.flush();outputStream.close();} catch (IOException ignored) {}}}return true;}
}

java操作svn工具类相关推荐

  1. java 操作IP工具类(子网、地址等)

    分享一个操作IP工具类,包含:格式校验,二进制IP互相转换,网段转换,获取网段内IP,校验IP冲突等等 package com.algoblu.pts.boss.basic.utils.ipOpera ...

  2. Java操作Excel工具类

    Excel工具类 要说的话 长期作为一个c/v工程师,搞了很久但是感觉还是比较空虚,正好最近又在弄Excel相关的东西,然后就基于POI封装了一个比较简单易用的工具类.在这之前,本人水平一般般,还希望 ...

  3. java 操作svn_java操作svn工具类SvnUtil

    直接上代码,工作中使用的版本,记录下. public class SvnUtil { private static Logger logger = Logger.getLogger(SvnUtil.c ...

  4. java中文件操作的工具类

    代码: package com.lky.pojo;import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

  5. 实现一个在JNI中调用Java对象的工具类,从此只需一行代码

    前言 我们知道在jni中执行一个java函数需要调用几行代码才行,如 jclass objClass = (*env).GetObjectClass(obj); jmethodID methodID ...

  6. android文件读取工具类,Android 下读取Assets Properties操作封装工具类

    Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...

  7. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53750584 本文出自[DylanAndroid的博客] 玩转JDBC打造数据 ...

  8. Java导入Excel工具类使用教程

    前言: 本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖org.apache.poi包.支持RESTful API,支持Spring ...

  9. 自己封装的poi操作Excel工具类

    在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.汇总Exc ...

最新文章

  1. python全排列_全排列算法python实现
  2. P3302 SDOI2013森林
  3. mvc.net分页查询案例——实体层(HouseModel.cs)
  4. php iconv 无效,关于nodejs iconv的编码无效 说明
  5. LeetCode 2090. 半径为 k 的子数组平均值(滑窗)
  6. 信安教程第二版-第11章网络物理隔离技术原理与应用
  7. samba 设置文件的读写权限
  8. 基于CSS+dIV的网页层,点击后隐藏或显示
  9. 梦断A股:证监会发现了小米的违规之处
  10. 【已解决】兼容多个版本CUDA
  11. Android——Intent简介
  12. MSP430 BOR电路的作用
  13. 卷尺精度标准_钢卷尺精度等级介绍
  14. Jquery获取与设置属性
  15. C++无名命名空间详解
  16. 使用Shell脚本对Oracle元数据进行动态版本控制
  17. grep或/与的多重过滤,包含ABC,但不含ABCD的字符echo输出带颜色的字符
  18. 怎么解除Word文档限制编辑?比较方便的两种办法
  19. cogs 1588. [USACO Feb04]距离咨询 倍增LCA
  20. 华为配置动态路由ISIS协议

热门文章

  1. 民宿OTA运营有哪些指标数据最重要
  2. android ota权限,Android手机Root后不能接收OTA?
  3. linux 卸载nexus,Linux下安装maven和nexus
  4. linux内核区分光口电口吗,服务器网卡光口和电口的区别?
  5. springboot 2.0 配置全局时间格式化
  6. scratch3.0-穿越城市的巴士
  7. 牛客OR36 链表的回文结构
  8. 计算机专业迎新晚会主题海报,如何制作迎新晚会宣传海报?推荐使用迎新海报素材!...
  9. nDPI – 快速入门指南
  10. 关于华为交换机bpdu enable. ntdp enable. ndp enable解析