Cruisecontrol испытывает затруднения при разборе строки, с которой муравей просто в порядке - PullRequest
2 голосов
/ 15 ноября 2009

У меня проблемы с тем, чтобы заставить мой скрипт cruisecontrol что-то сделать. Я хочу вызвать grep для файлов в моем проекте, чтобы найти несколько определений препроцессора, и поместить их в список, который я смогу использовать позже. Этот фрагмент отлично работает, когда я помещаю его в файл сборки ant, но возвращает ошибку при использовании в cruisecontrol ...

<target name="generate_list">
  <echo>calling grep</echo>
  <exec dir="${basedir}/src/" executable="grep" failonerror="true">
    <arg line="-R --include=*.{cpp,h} -l -P &quot;ARG1|ARG2|ARG3&quot; . &gt; touchlist" />
  </exec>
  <echo>contents of touchlist is</echo>
  <exec dir="${basedir}/src/" executable="cat" failonerror="true">
    <arg line="touchlist" />
  </exec>
</target>

ошибка возвращается

<stacktrace>
  /opt/cruisecontrol-2.8.1/build-foo.xml:195: exec returned: 1
    at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:636)
    at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:662)
    at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:487)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:357)
    at org.apache.tools.ant.Target.performTasks(Target.java:385)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
    at org.apache.tools.ant.Main.runBuild(Main.java:698)
    at org.apache.tools.ant.Main.startAnt(Main.java:199)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
</stacktrace>

Я в полной растерянности. Я даже не знаю, как я могу отладить этот, кроме постепенного изменения вещей и наблюдения за тем, что происходит.

Ответы [ 3 ]

1 голос
/ 15 ноября 2009

Другая идея (после поиска в Google) - избегать использования <arg line.... Замените его на несколько <arg value... определений.

1 голос
/ 15 ноября 2009

Я бы посоветовал вам извлечь командную строку в отдельный сценарий оболочки, чтобы вы вызывали только сценарий и позволяли сценарию вызывать grep.

0 голосов
/ 16 ноября 2009

Может быть, это разные основатели.

Поместите <echoproperties/> в первую строку вашей цели и сравните выходные данные для basedir для запуска ant-run и cruisecontrol.

...