Connection to Subversion repository http://svn.xxx.cn/Current failed: org.tmatesoft.svn.core.SVNAuthenticationException: svn: Authentication required for '<http://svn.xxx.cn:80>'
原因:据说是svnkit包的一个bug.
解决方案:
添加JVM系统参数-Dsvnkit.http.methods=Basic,Digest,NTLM
Properties properties = System.getProperties();
properties.setProperty("svnkit.http.methods", "Basic,Digest,NTLM");
org.tmatesoft.svn.core.SVNException: svn: Unable to create SVNRepository object for
原因:svn访问地址与调用的方法不一致
解决方案:svn://xx.xx.xx -- SVNRepositoryFactoryImpl.setup();
http://xx.xx.xx -- DAVRepositoryFactory.setup( );
mvn install:install-file -Dfile=E:\software\svnkit.jar -DgroupId=thirdlib -DartifactId=svnkit -Dversion=1.3.5 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
作用:将本地jar加入到maven2仓库。
maven1.0不含mvn命令,如需要将jar加入到本地的maven仓库,可以到仓库按其它包目录结构创建文件夹,并将本地jar拷贝到创建的目录下,在project.xml添加相应的依赖关系即可使用。
java.lang.IllegalArgumentException: Action 'com.xxx.jira.web.action.issue.CheckSvnCommitIssue' could not be instantiated. Class is invalid or static initializers have failed to run
原因:未将相应的jar包拷贝到主程序的lib目录下,在插件部分加了jar包,所以编译不会出错,但当运行时就会报如上错误。
解决方案:在主程序的project.xm也需要加相应的依赖。
java访问svn测试代码:
public class History {
public static void main(String[] args) {
Properties properties = System.getProperties();
properties.setProperty("svnkit.http.methods", "Basic,Digest,NTLM");
DAVRepositoryFactory.setup();
// SVNRepositoryFactoryImpl.setup();
String url = "http://svn.xxx.cn/current";
// String url = "svn://localhost";
String name = "username";
String password = "password";
long startRevision = 0;
long endRevision = -1; // HEAD (the latest) revision
SVNRepository repository = null;
try {
repository = SVNRepositoryFactory.create(SVNURL
.parseURIEncoded(url));
} catch (SVNException e) {
e.printStackTrace();
}
ISVNAuthenticationManager authManager = SVNWCUtil
.createDefaultAuthenticationManager(name, password);
repository.setAuthenticationManager(authManager);
final Collection logEntries = new ArrayList();
long start = System.currentTimeMillis();
try {
repository.log(new String[] { "" }, startRevision, endRevision,
true, true, new ISVNLogEntryHandler() {
public void handleLogEntry(SVNLogEntry entry) {
if (entry.getMessage().indexOf("QS-5762") != -1) {
logEntries.add(entry);
}
}
});
} catch (SVNException e) {
e.printStackTrace();
}
for (Iterator entries = logEntries.iterator(); entries.hasNext();) {
SVNLogEntry logEntry = (SVNLogEntry) entries.next();
System.out.println("---------------------------------------------");
System.out.println("revision: " + logEntry.getRevision());
System.out.println("author: " + logEntry.getAuthor());
System.out.println("date: " + logEntry.getDate());
System.out.println("log message: " + logEntry.getMessage());
if (logEntry.getChangedPaths().size() > 0) {
System.out.println();
System.out.println("changed paths:");
Set changedPathsSet = logEntry.getChangedPaths().keySet();
for (Iterator changedPaths = changedPathsSet.iterator(); changedPaths
.hasNext();) {
SVNLogEntryPath entryPath = (SVNLogEntryPath) logEntry
.getChangedPaths().get(changedPaths.next());
System.out.println(" "
+ entryPath.getType()
+ " "
+ entryPath.getPath().substring(
entryPath.getPath().lastIndexOf("/") + 1));
}
}
}
}
}