[英]Ant build script executing <sql> task using java code
知道嗎,為什么通過Java代碼執行ANT構建腳本的SQL任務后,沒有任何調試注釋被打印一次?
在構建腳本中執行sql的java類是
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);
}
}
}
我在控制台中看不到調試字符串“ After” 。 我僅在嘗試使用Java代碼執行sql任務時才注意到此問題。
ant腳本中包含以下簡單事務標記。
<transaction> <![CDATA[ select now() ]]> </transaction>
有什么想法嗎?
提前致謝。
如果添加標簽的輸出屬性,則將解決該問題。
使用Java代碼執行任何任務的Ant構建腳本示例:
查看源代碼: 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.