2009-11-02 50 views
1

任何想法,为什么在通过java代码执行ANT构建脚本的SQL任务后没有打印任何调试注释?Ant构建脚本执行<sql>使用java代码的任务

的Java类在建scirpt执行SQL是

public class AntRunnerTest { 
    private Project project; 

    public void executeTask(String taskName) { 
     try { 
     project = new Project(); 
     project.init(); 
     project.setBasedir(new String(".")); 
     ProjectHelper helper = ProjectHelper.getProjectHelper(); 
     project.addReference("ant.projectHelper", helper); 
     helper.parse(project, new File("build-copy.xml")); 
     System.out.println("Before"); 
     project.executeTarget(taskName); 
     System.out.println("After"); 
     } catch(Exception ex) { 
      System.out.println(ex.getMessage()); 
     } 
    } 

    public static void main(String args[]) { 
     try { 
     AntRunnerTest newInst = new AntRunnerTest(); 
     newInst.executeTask("sql"); 
     } catch(Exception e) { 
     System.out.println(""+e); 
     } 
    } 
} 

我没有看到调试字符串“后”在控制台得到打印。我只注意到这个问题,当我尝试使用java代码执行一个sql任务。

蚂蚁脚本中有以下简单的事务标记。

<transaction> <![CDATA[ select now() ]]> </transaction> 

有什么想法?

在此先感谢。

+0

确保您覆盖SQL任务的 “输出” 属性值一些.txt文件。这应该可以解决问题。 – Jay 2009-11-03 20:15:53

+0

@Jay - 如果你回答了这个问题,你可以发布答案并接受答案,所以这个问题不会显示在未答复的列表中? – 2009-11-05 17:55:00

+0

嗨。这段代码执行ant文件名build-copy.xml。该文件是否已经存在或即时创建? – Iso 2010-05-27 23:04:55

回答

1

如果添加标签的输出属性,问题将得到解决。

0
使用Java代码执行任何任务Ant构建脚本的

示例:

  • 直接日志到控制台和字节阵列;
  • 填写Ant项目变量;
  • 执行一个蚂蚁任务;
  • 将输出日志添加到swing组件(javax.swing.JTextArea);

查看源代码:https://github.com/wellboyvg/workgear/blob/master/manager/src/manager/WorkGearManager.java

private boolean executeAntTask(String target) { 
boolean success = false; 
// use log output to the console 
DefaultLogger conlog = new DefaultLogger(); 
conlog.setErrorPrintStream(System.err); 
conlog.setOutputPrintStream(System.out); 
conlog.setMessageOutputLevel(Project.MSG_INFO); 
// use log output to the byte array 
DefaultLogger strlog = new DefaultLogger(); 
ByteArrayOutputStream errb = new ByteArrayOutputStream(); 
PrintStream errp = new PrintStream(errb); 
strlog.setErrorPrintStream(errp); 
ByteArrayOutputStream outb = new ByteArrayOutputStream(); 
PrintStream outp = new PrintStream(outb); 
strlog.setOutputPrintStream(outp); 
strlog.setMessageOutputLevel(Project.MSG_INFO); 
// prepare Ant 
Project project = new Project(); 
File buildfile = new File(buildname); 
project.setUserProperty("ant.file", buildfile.getAbsolutePath()); 
// add record log to the console 
project.addBuildListener(conlog); 
// add record log to the byte array 
project.addBuildListener(strlog); 
// 
try { 
    // fill the Ant project variables 
    for (Entry m : map.entrySet()) { 
    project.setUserProperty(m.getKey().toString(), m.getValue().toString()); 
    } 
    project.fireBuildStarted(); 
    project.init(); 
    ProjectHelper helper = ProjectHelper.getProjectHelper(); 
    project.addReference("ant.projectHelper", helper); 
    helper.parse(project, buildfile); 
    // execute the ant task 
    project.executeTarget(target); 
    project.fireBuildFinished(null); 
    success = true; 
} catch (BuildException buildException) { 
    project.fireBuildFinished(buildException); 
} 
// add output log to swing component (javax.swing.JTextArea) 
jtLog.append(new String(outb.toByteArray())); 
jtLog.append(new String(errb.toByteArray())); 
return success; 

}