Сценарий сборки Ant, выполняющий задачу <sql>с использованием кода Java - PullRequest
1 голос
/ 02 ноября 2009

Есть идеи, почему ни один из комментариев отладки не выводится один раз после выполнения SQL-задачи сценария сборки ANT через код Java?

Java-класс для выполнения sql в scirpt сборки:

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);
      }
   }
}

Я не вижу, как строка отладки "После" печатается в консоли. Я заметил эту проблему, только когда я пытаюсь выполнить задачу SQL, используя код Java.

В скрипте ant есть следующий простой тег транзакции.

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

Есть мысли?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Проблема будет решена, если вы добавите атрибут вывода тега.

0 голосов
/ 10 июня 2016

Пример сценария сборки Ant, выполняющего любую задачу с использованием кода Java:

  • направить журнал в консоль и байтовый массив;
  • заполните переменные проекта 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;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...