我们使用phing来构建和测试我们的项目。我希望尽可能地消除对PEAR的依赖,这样我就可以为不同的项目运行不同版本的包。我已经创建了一个composer.json文件来安装所有必要的包
{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.2.*",
"doctrine/doctrine-orm-module": "*",
"phpoption/phpoption": "*"
},
"require-dev": {
"phing/phing": "*",
"phpunit/phpunit": "*",
"pdepend/pdepend": "*",
"phpmd/phpmd": "*",
"phploc/phploc": "*",
"phpdocumentor/phpdocumentor": "*",
"squizlabs/php_codesniffer": "*",
"mayflower/php-codebrowser": "*",
"sebastian/phpcpd": "*",
"zendframework/zftool": "dev-master",
"zendframework/zend-form": "*",
"hounddog/doctrine-data-fixture-module": "*",
"pear/console_commandline": "dev-trunk",
"pear/log": "dev-master",
"pear/pear_exception": "dev-master"
},
"config": {
"bin-dir": "vendor/bin/"
}
}我有build.xml博士学位
<?xml version="1.0" encoding="UTF-8"?>
<project name="SolExactConnector" default="build">
<property name="basedir" value="." override="true"/>
<property name="source" value="${basedir}/module"/>
<fileset dir="${source}" id="sourceWithoutTests">
<include name="**/*.php"/>
<exclude name="*/test/"/>
<exclude name="*/Module.php"/>
<exclude name="*/config/module.config.php"/>
<exclude name="*/test/Bootstrap.php"/>
</fileset>
<fileset dir="${source}" id="sourceWithTests">
<include name="**/*.php"/>
<exclude name="*/Module.php"/>
<exclude name="*/config/module.config.php"/>
<exclude name="*/test/Bootstrap.php"/>
</fileset>
<fileset dir="${source}" id="tests">
<include name="*/test/**/*Test.php"/>
</fileset>
<target name="prepare" description="Clean up and create artifact directories">
<delete dir="${basedir}/build/api"/>
<delete dir="${basedir}/build/code-browser"/>
<delete dir="${basedir}/build/coverage"/>
<delete dir="${basedir}/build/logs"/>
<delete dir="${basedir}/build/pdepend"/>
<delete dir="${basedir}/build/docs"/>
<mkdir dir="${basedir}/build/api"/>
<mkdir dir="${basedir}/build/code-browser"/>
<mkdir dir="${basedir}/build/coverage"/>
<mkdir dir="${basedir}/build/logs"/>
<mkdir dir="${basedir}/build/pdepend"/>
<mkdir dir="${basedir}/build/docs"/>
</target>
<target name="phpunit" description="Run unit tests" depends="prepare">
<coverage-setup database="${basedir}/build/logs/coverage.db">
<fileset refid="sourceWithoutTests"/>
</coverage-setup>
<phpunit haltonfailure="true" haltonerror="true" printsummary="true" bootstrap="test/Bootstrap.php"
codecoverage="true">
<formatter todir="${basedir}/build/logs" type="clover" outfile="clover.xml"/>
<formatter todir="${basedir}/build/logs" type="xml" outfile="junit.xml"/>
<batchtest>
<fileset refid="tests"/>
</batchtest>
</phpunit>
</target>
<target name="lint" description="Perform syntax check of sourcecode files" depends="prepare">
<phplint haltonfailure="true" cachefile="${basedir}/build/logs/lint.cache">
<fileset refid="sourceWithTests"/>
</phplint>
</target>
<target name="pdepend" description="Generate jdepend.xml and software metrics charts using PHP_Depend"
depends="prepare">
<phpdepend file="${source}">
<logger type="jdepend-xml" outfile="${basedir}/build/logs/jdepend.xml"/>
<logger type="jdepend-chart" outfile="${basedir}/build/pdepend/dependencies.svg"/>
<logger type="overview-pyramid" outfile="${basedir}/build/pdepend/overview-pyramid.svg"/>
</phpdepend>
</target>
<target name="phpmd" description="Generate pmd.xml using PHPMD" depends="prepare">
<phpmd file="${source}">
<formatter type="xml" outfile="${basedir}/build/logs/pmd.xml"/>
</phpmd>
</target>
<target name="phpcpd" description="Generate pmd-cpd.xml using PHPCPD" depends="prepare">
<phpcpd>
<formatter type="pmd" outfile="${basedir}/build/logs/pmd-cpd.xml"/>
<fileset refid="sourceWithTests"/>
</phpcpd>
</target>
<target name="phploc" description="Generate phploc.xml" depends="prepare">
<phploc reportType="xml" reportName="phploc"
reportDirectory="${basedir}/build/logs">
<fileset refid="sourceWithTests"/>
</phploc>
</target>
<target name="phpcs" description="Generate checkstyle.xml using PHP_CodeSniffer" depends="prepare">
<phpcodesniffer
standard="PSR2"
showSniffs="true"
showWarnings="true">
<fileset refid="sourceWithTests"/>
<formatter type="default" usefile="false"/>
<formatter type="checkstyle" outfile="${basedir}/build/logs/checkstyle-codesniffer.xml"/>
</phpcodesniffer>
</target>
<target name="hphpa" description="HipHop's static analyzer" depends="prepare">
<exec executable="wget" checkreturn="true">
<arg line="https://phar.phpunit.de/hphpa.phar"/>
</exec>
<exec executable="php hphpa.phar" checkreturn="true">
<arg line="--checkstyle ${basedir}/build/logs/checkstyle-hphpa.xml"/>
<arg line="${source}"/>
</exec>
<delete file="hphpa.phar"/>
</target>
<target name="phpdoc2" description="Generate API documentation using phpDox" depends="prepare">
<phpdoc2 title="API Documentation"
destdir="${basedir}/build/docs"
template="responsive-twig">
<fileset refid="sourceWithTests"/>
</phpdoc2>
</target>
<target name="phpcb" description="Aggregate tool output with PHP_CodeBrowser" depends="prepare">
<exec executable="phpcb">
<arg line="--log ${basedir}/build/logs
--source ${source}
--output ${basedir}/build/code-browser"/>
</exec>
</target>
<target name="composer" description="Installing dependencies" depends="prepare">
<delete dir="${basedir}/vendor"/>
<composer command="install">
<arg value="--dev"/>
</composer>
</target>
<target name="doctrine" description="Building Database/Doctrine" depends="prepare">
<copy file="${basedir}/config/autoload/local.php.test" tofile="${basedir}/config/autoload/local.php"
haltonerror="true"/>
<delete dir="${basedir}/data/db/"/>
<mkdir dir="${basedir}/data/db/"/>
<chmod file="${basedir}/data/db/" mode="777"/>
<exec executable="${basedir}/vendor/bin/doctrine-module">
<arg value="orm:schema-tool:create"/>
</exec>
<delete dir="${basedir}/data/DoctrineORMModule/Proxy"/>
<mkdir dir="${basedir}/data/DoctrineORMModule/Proxy"/>
<exec executable="${basedir}/vendor/bin/doctrine-module">
<arg value="orm:generate-proxies"/>
</exec>
<exec executable="${basedir}/vendor/bin/doctrine-module">
<arg value="data-fixture:import"/>
</exec>
</target>
<target name="build"
depends="lint,pdepend,phpcs,phpcpd,phpmd,hphpa,phpdoc2,composer,doctrine,phpunit,phpcb"/>
</project>有些目标(如phpunit、phpmd和phploc)运行良好,而另一些则不行?例如,当我运行phpcpd时,会得到以下错误:
目标" PHPCPD“的执行失败原因如下: /home/munnik/Sites/SolExactConnector/trunk/build.xml:83:16: /home/munnik/Sites/SolExactConnector/trunk/build.xml:83:16: PHPCPDTask取决于正在安装的PHPCPD和include_path。 构建失败的/home/munnik/Sites/SolExactConnector/trunk/build.xml:83:16: /home/munnik/Sites/SolExactConnector/trunk/build.xml:83:16: PHPCPDTask取决于正在安装的PHPCPD和include_path。总时间: 0.1250秒
我需要添加作曲家自编或其他类似的内容吗?
发布于 2013-10-19 08:47:31
要使用composer自动加载程序而不是全局PEAR包,可以在build.xml的开头添加以下行:
<php expression="include('vendor/autoload.php')"/>这帮助了我使用PHPUnit (我没有全局的PHPUnit PEAR安装)。认为这将帮助您成功地加载您的所有作曲家包。
发布于 2015-12-16 23:37:49
Phing现在提供了一个自动装填任务,您可以使用它来包含您自己的自动加载器或作曲家的自动加载器。
例如:
<autoloader autoloaderpath="vendor/autoload.php"/>发布于 2014-07-10 08:27:50
若要设置编写器自动加载程序,可以将目标创建为:
<target name="require.autoload">
<adhoc><![CDATA[
require_once 'lib/composer/autoload.php';
]]></adhoc>
</target>那么所有需要自动加载器的目标都有这样的要求。
<target name="test.coverage.html" depends="require.autoload">注意:要求一旦文件放置在
"config": {
"vendor-dir": "lib/composer"https://stackoverflow.com/questions/19226836
复制相似问题