0

我看过这两个帖子..他们没有帮助:

如果我在 shell 提示符下运行 phploc,它工作得很好。所以它一定与我的build.xml文件有关……但我不知道是什么。

<target name="phploc" description="Measure project size using PHPLOC">
  <exec executable="phploc">
    <arg path="${basedir}/../src" />
    <arg value="--log-csv" />  
    <arg value="${basedir}/build/logs/phploc.csv" />    
  </exec>
</target>

这工作正常:

C:\projects\project1\build>phploc ../src
phploc 2.0.6 by Sebastian Bergmann.

我的文件夹结构是

c:\projects\project1

      build
          ...
          vendor
             bin
             ...
      src
      tests

c:\projects\project1\build>ant phploc:

BUILD FAILED
C:\projects\project1\build\build.xml:55: Execute failed: java.io.IOException:
 Cannot run program "phploc": CreateProcess error=2, The system cannot find the
file specified
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at java.lang.Runtime.exec(Runtime.java:620)
        at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav

更新

C:\>where phploc
INFO: Could not find files for the given pattern(s).

我错过了什么?

4

1 回答 1

1

从聊天讨论来看,这是一个与 PATH 相关的问题。这正是我的想法。

设置in的绝对路径就可以了。它正在C:\projects\project1\build目录的命令行上工作,因为它位于其子目录之一(vendor\bin)中,并且该子目录已经在变量中。phploc<exec executable="phploc">phplocPATH

PATH=C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Calibre2\;C:\xampp\php;C:\ProgramData\ComposerSetup\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\Java;c:\ant\bin;.\vendor\bin

注意:虽然在这里提供绝对路径是可行的,但使用相对路径是一个很好的做法,这样您的项目就可以移植了。在这种情况下,您可以使用basedir作为所有相对路径的参考点。

于 2014-08-30T12:45:20.683 回答