无法通过ANT运行phploc



我已经看了这两篇文章。。他们没有帮助:

  • Jenkins的PHP构建失败,';无法运行程序";phploc"'
  • 无法运行通过composer安装的phploc

如果我在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:projectsproject1build>phploc ../src
phploc 2.0.6 by Sebastian Bergmann.

我的文件夹结构是

c:projectsproject1
      build
          ...
          vendor
             bin
             ...
      src
      tests

c: \projects\project1\build>antphploc:

BUILD FAILED
C:projectsproject1buildbuild.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).

我错过了什么?

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

<exec executable="phploc">中设置phploc绝对路径起到了作用。它在C:\projects\project1\build目录的命令行上工作,因为phploc在它的一个子目录(vendor\bin)中,而这个子目录已经在PATH变量中。

PATH=C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)Calibre2;C:xamppphp;C:ProgramDataComposerSetupbin;C:Program Files (x86)IDM Computer SolutionsUltraEdit;C:Program Files (x86)Java;c:antbin;.vendorbin

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

相关内容

  • 没有找到相关文章

最新更新