我有一个脚本可以查找并输出或将当前版本#写入文本文件。现在唯一的问题是如何将此版本号转换为PHING属性。
现在我的PHING目标构建了build.zip和built.tar,我希望它能够构建build-1.0.0.zip或者版本脚本决定当前版本是什么。我怎样才能做到这一点?我是否必须创建自己的“任务”?
答案 0 :(得分:15)
另一种方法是使用ExecTask上的outputProperty
属性在构建文件中提供属性。
<target name="version">
<exec command="cat version.txt" outputProperty="version.number" />
<echo msg="Version: ${version.number}" />
</target>
答案 1 :(得分:6)
您可能需要为此创建自己的任务。任务看起来像......
<?php
require_once "phing/Task.php";
class VersionNumberTask extends Task
{
private $versionprop;
public function setVersionProp($versionprop)
{
$this->versionprop = $versionprop;
}
public function init()
{
}
public function main()
{
// read the version text file in to a variable
$version = file_get_contents("version.txt");
$this->project->setProperty($this->versionprop, $version);
}
}
然后你将在build xml中定义任务
<taskdef classname="VersionNumberTask" name="versiontask" />
然后调用任务
<target name="dist">
<versiontask versionprop="version.number"/>
</target>
此时,您应该能够在整个构建xml中使用$ {version.number}访问版本号。
希望这有帮助!
答案 2 :(得分:4)
适用于Windows和Linux的替代方法。
<exec executable="php" outputProperty="version.number">
<arg value="-r" />
<arg value="$fh=file('version.txt'); echo trim(array_pop($fh));" />
</exec>
<echo msg="Current version is: ${version.number}"/>
假设文件的最后一行只是版本号,如果您想更新文件中的版本号。试试这个。
<propertyprompt propertyName="release_version" defaultValue="${version.numver}" promptText="Enter version to be released."/>
<exec executable="php">
<arg value="-r" />
<arg value="$file=file_get_contents('version.txt'); $file = str_replace('${version.number}', '${release_version}', $file); file_put_contents('version.txt', $file);" />
</exec>
<echo msg="Version number updated." />
<property name="version.number" value="${release_version}" override="true" />
答案 3 :(得分:1)
在Windows和Linux上都可以使用的替代和最佳方式(我的观点)是使用本机任务LoadFileTask
<loadfile property="myVersion" file="version.txt" />
<echo msg="Current version is: ${myVersion}"/>
您也可以使用filterchain
<loadfile property="myVersion" file="version.txt">
<filterchain><striplinebreaks /></filterchain>
</loadfile>
<echo msg="Current version is: ${myVersion}"/>