0

私はこれらの両方の投稿を見てきました..彼らは役に立たない:

シェル プロンプトで 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の絶対パスを設定するとうまくいきました。サブディレクトリ ( vendor\bin ) の 1 つにあり、このサブディレクトリが既に変数にあったため、 C:\projects\project1\buildディレクトリからコマンド ラインで作業していました。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 に答える