Cruisecontrol在解析一条蚂蚁很好的线路时遇到了麻烦

时间:2009-11-14 22:29:14

标签: ant cruisecontrol

我无法使用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 个答案:

答案 0 :(得分:1)

我建议您将命令行解压缩到单独的shell脚本,这样您就可以只调用脚本并让脚本调用grep

答案 1 :(得分:1)

另一个想法(谷歌搜索后)将避免使用<arg line...。将其替换为多个<arg value...定义。

答案 2 :(得分:0)

也许是不同的基础。

在目标的第一行放置一个<echoproperties/>,并比较ant-run和cruisecontrol run的basedir输出。

相关问题