2014-08-30 105 views
0

我看了這兩個職位運行phploc ..他們不幫助:無法通過ANT

如果我在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:\項目\ PROJECT1 \構建>螞蟻 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 

UPDATE

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

我在想什麼?

+0

在命令提示符處,輸入以下內容時會得到什麼:'where phploc'?請粘貼輸出。 – Technext 2014-08-30 09:53:18

+0

你試過命令嗎? – Technext 2014-08-30 11:22:36

+0

對不起,只是忙着別的東西......給我一個小時左右...... – Maxcot 2014-08-30 11:25:04

回答

1

從聊天討論來看,它是一個與PATH相關的問題。這正是我所想的那樣。

設置絕對路徑phploc<exec executable="phploc">訣竅。由於phploc位於其子目錄(vendor \ bin)中,並且此子目錄已經在PATH變量中,因此它正在從命令行C:\ projects \ project1 \ build目錄中運行。

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作爲所有相對路徑的參考點。

+0

感謝Technext ...非常感謝。 – Maxcot 2014-08-30 12:56:23