开发者社区> 问答> 正文

怎么使用ant打增量包呢?

如题!

另,版本控制使用的是svn。

如果对这方面比较了解请不吝赐教!

展开
收起
小旋风柴进 2016-03-05 14:58:22 2948 0
1 条回答
写回答
取消 提交回答
  • 要想实现打增量包要实现两个基本功能:

    1.checkout 相应的svn工程

    使用svnant
    screenshot
    screenshot


    2.查询相应的svnlog,并根据svnlog拷贝相应的文件

    使用svnkit.jar可以查询svn工程的日志。

    要在ant中使用的话,可以自己实现main方法,在ant中引入

    setupLibrary();

    SVNRepository repository = null;
    try {
      repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
           
    ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password);
    repository.setAuthenticationManager(authManager);
           
    Collection<SVNLogEntry> logEntries = null;
    try {
      logEntries = repository.log(new String[]{""}, null, revision, revision, true, true);
    } catch (Exception e) {
      System.out.println("error while collecting log information for '"
                      + url + "': " + e.getMessage());
          System.exit(1);
    }
           
    for(Iterator<SVNLogEntry> 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 changedPathSet = logEntry.getChangedPaths().keySet();
                  SVNLogEntryPath entryPath = null;
                  for(Iterator changedPaths = changedPathSet.iterator(); changedPaths.hasNext();){
                      entryPath = (SVNLogEntryPath)logEntry.getChangedPaths().get(changedPaths.next());
                      System.out.println(" "
                              + entryPath.getType()
                              + " "
                              + entryPath.getPath()
                              + ((entryPath.getCopyPath() != null) ? " (from "
                                      + entryPath.getCopyPath() + " revision "
                                      + entryPath.getCopyRevision() + ")" : ""));
                      //TODO 这里可以实现根据log拷贝相应的文件
                  }
              }
          }
    
    private static void setupLibrary(){
            DAVRepositoryFactory.setup();
            SVNRepositoryFactoryImpl.setup();
     FSRepositoryFactory.setup();
        }

    根据log拷贝文件需要根据你工程的结构来处理

    2019-07-17 18:53:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《Apache Flink-重新定义计算》PDF下载 立即下载
Python第五讲——关于爬虫如何做js逆向的思路 立即下载
低代码开发师(初级)实战教程 立即下载