调用SvnAnt的Copy.setRevision

时间:2017-05-02 13:21:47

标签: ant svnkit svnant

我正在尝试使用Java执行SVN复制操作(从分支创建标记)。

我收到以下异常。

  

“线程中的异常”主“java.lang.NullPointerException

     

at org.tigris.subversion.svnant.SvnFacade.getFacade(Unknown Source)

     

at org.tigris.subversion.svnant.SvnFacade.getSetting(Unknown Source)

     

at org.tigris.subversion.svnant.SvnFacade.getDateFormatter(Unknown Source)

     

at org.tigris.subversion.svnant.commands.SvnCommand.getDateFormatter(Unknown Source)

     

at org.tigris.subversion.svnant.commands.SvnCommand.getRevisionFrom(Unknown Source)

     

at org.tigris.subversion.svnant.commands.Copy.setRevision(Unknown Source)

     

at svnOperation.createTags.commitTags(createTags.java:55)

     

在svnOperation.createTags.main(createTags.java:23)“

我正在使用最新的SVN JAR文件。

有人可以建议如何纠正这个或我在这里做的错误。

这是我的代码:

Project p = new Project();
p.setProperty("username", "automation");
p.setProperty("password", "automation");
p.setProperty("javahl", "true");
p.setProperty("javahl", "true");
SvnTask svn = new SvnTask();

Copy C1 = new Copy();

C1.setDescription("Creating tags");
C1.setSrcUrl(new SVNUrl("SrcUrl"));
C1.setDestUrl(new SVNUrl("DestUrl"));
C1.setMessage("message");
C1.setRevision("1234"); 
C1.setProject(p);

svn.addCopy(C1);
svn.setProject(p);
svn.execute();

1 个答案:

答案 0 :(得分:0)

SvnAnt旨在从Ant脚本中使用。但是,您似乎正在尝试使用Java代码与Subversion进行交互。

SVNKit是从Java应用程序中访问Subversion功能的更好方法。

以下是创建Subversion标记的示例:

SVNCopyClient copyClient =
    SVNClientManager.newInstance().getCopyClient();

SVNURL srcURL = SVNURL.parseURIEncoded("http://example.com/repos/trunk");
SVNURL dstURL = SVNURL.parseURIEncoded("http://example.com/repos/tags/tag");
SVNCopySource copySource =
    new SVNCopySource(SVNRevision.HEAD, SVNRevision.HEAD, srcURL);

copyClient.doCopy(new SVNCopySource[] {copySource}, dstURL,
    false, false, true, "message", null); 

有关详情,请参阅Getting Started With SVNKit