我正在使用build.xml
将Ant phing
转换为项目。其中一个目标是使用phploc
,我使用<phploc/>
任务将其转换为目标。我收到了错误消息:
Execution of target "phploc" failed for the following reason: \
/Users/david/workspace/phoenix/build-test/build.xml:44:17: \
/Users/david/workspace/phoenix/build-test/build.xml:44:17: \
PHPLocTask depends on PHPLoc being installed and on include_path.
我已下载PHPLoc
,该文件已作为*.phar
文件分发,并按照README.md中的说明进行操作。
$ phploc -help
phploc 2.0.6 by Sebastian Bergmann.
Usage:
phploc [--names="..."] [--names-exclude="..."] [--count-tests] [--git-repository="..."] [--exclude="..."] [--log-csv="..."] [--log-xml="..."] [--progress] [values1] ... [valuesN]
...
我仍然收到相同的错误消息。我找到了include_path
:
$ php -i 2> /dev/null | grep "^include_path"
include_path => .:/usr/local/php/includes:/usr/local/pear/share/pear:/usr/lib/php/pear => .:/usr/local/php/includes:/usr/local/pear/share/pear:/usr/lib/php/pear
并将phploc
复制到/usr/local/php/includes
,但无论是PHPLoc
还是phploc
,我仍会收到相同的错误消息。
我在/usr/lib/php/pear/phing/Phing/tasks/ext/phploc/PHPLoc.php
找到了phploc任务:
public function main()
{
/**
* Find PHPLoc
*/
if (!class_exists('\SebastianBergmann\PHPLOC\Analyser')) {
if (!@include_once('SebastianBergmann/PHPLOC/autoload.php')) {
if (!@include_once('PHPLOC/Analyser.php')) {
throw new BuildException(
'PHPLocTask depends on PHPLoc being installed and on include_path.',
$this->getLocation()
);
} else {
$this->oldVersion = true;
}
}
}
第一个class_exists
语句未返回 true 值,而include_once
未获取包含的文件。我想知道这是因为phploc是一个PHAR包而不是单个文件。
我总是可以执行<exec/>
或<apply/>
任务,但我认为使用已定义的任务会更好。
安装 phploc我需要做什么,所以<phploc>
Phing任务可以找到它?
答案 0 :(得分:4)
PEAR频道现已关闭。你应该在你的build.xml中添加这样的东西:
<php expression="include('/var/lib/jenkins/.composer/vendor/autoload.php')"/>
并作为Jenkins用户
全局安装作曲家的所有依赖项composer global require 'phploc/phploc=*'
或将所有工具包含到您的项目中并设置正确的自动加载文件
答案 1 :(得分:0)
信息不在phploc页面上,但经过所有文件和一些谷歌搜索,我发现我可以做到以下几点:
$ sudo pear channel-discover pear.phpunit.de
$ sudo pear channel-discover pear.symfony.com
$ sudo pear channel-discover pear.netpirates.net
$ sudo pear install phpunit/phploc
这将通过Pear安装phploc,而Phing可以使用它。 Phar套餐似乎与Phing没有合作。