我试图掌握构建工具,而且我正在努力解决一些基础问题。
我在本地Win7机器上使用XAMPP。我已经设置了虚拟主机,因此我可以处理多个应用程序(。\ xampp \ apache \ conf \ extra \ _ httpd-vhosts.conf)
所以我有这个:
app1
php
application
cache
config
controllers
core
...
views
assets
system
tests
vendor
app2
php
application
...etc
现在我尝试使用本指南安装和设置Jenkins:http://jenkins-php.org/automation.html
然后在" Automation" .... 构建脚本假定PHP_CodeSniffer和PHPMD的规则集位于build / phpcs.xml和build / phpmd.xml。
构建从何而来?它属于哪里?
答案 0 :(得分:1)
嗯,您所指的链接是关于Ant项目以及如何将其与Jenkins一起使用。我希望你已经完成了Jenkins的安装。在Ant中,您有一个XML文件(通常是 build.xml ),您可以在其中定义各种目标。每个目标都做了一些工作,比如清理(最后构建的已编译二进制文件),编译,打包等。如果您不了解Ant脚本的工作原理,则必须仔细阅读详细信息。就 build 文件夹而言,如果您将浏览为build.xml文件提供的link,您将看到以下这些行:
<arg value="${basedir}/build/phpmd.xml"/>
<arg value="--standard=${basedir}/build/phpcs.xml"/>
在Ant中, basedir 是完成所有路径计算的地方。有关 basedir 和Ant脚本的详细信息,请参阅this链接。通常,您的项目&#39;输出( class 文件,如果是Java项目)放在 build 文件夹下。我没有参与PHP项目,但是从上面提到的语句开始,即&#34; 构建脚本假定PHP_CodeSniffer和PHPMD的规则集位于build / phpcs.xml和build / phpmd.xml。&#34;,Ant脚本假定两个XML文件都应位于相同的 build 文件夹下。在了解了您正在做的事情后,您可以将这些XML的位置更改为任何其他位置,但仅 。
在build.xml文件中完成自定义后,您将在Jenkins中使用此文件(在Build > Invoke Ant
部分下)。如果有的话,Jenkins将使用您定义的参数运行脚本。
<强>更新强>
它并不像你想的那样。我刚从 Java 项目的经验中解释了 build 文件夹的重要性。在 PHP 中,如果您浏览Ant文件,您将意识到build
目录更像所有与构建相关的脚本的目录,例如phpmd.xml,phpmd保留.xml等。
Ant 不创建 build 目录。相反,它的 main 意图是确保构建目录中的子目录存在,如下面的代码所示:
<target name="prepare" depends="clean" description="Prepare for build">
<mkdir dir="${basedir}/build/api"/>
<mkdir dir="${basedir}/build/coverage"/>
<mkdir dir="${basedir}/build/logs"/>
<mkdir dir="${basedir}/build/pdepend"/>
<mkdir dir="${basedir}/build/phpdox"/>
</target>
构建目录中的文件夹实际上是存储build.xml 的输出的目录,如下面的语句所示:
Executing the build.xml script will produce the following build directory:
build
|-- api ...
|-- coverage ...
`-- logs
|-- checkstyle.xml
|-- clover.xml
|-- crap4j.xml
|-- jdepend.xml
|-- junit.xml
|-- phploc.csv
|-- pmd-cpd.xml
`-- pmd.xml