我有一個腳本,可以查找和輸出或寫我的當前版本#到一個文本文件。現在唯一的問題是如何讓這個版本號進入PHING屬性。Phing,調用一個命令得到它的輸出到一個屬性
現在我的PHING目標構建build.zip和built.tar,我希望它構建build-1.0.0.zip或版本腳本決定當前版本的任何內容。我怎樣才能做到這一點?我需要創建自己的「任務」嗎?
我有一個腳本,可以查找和輸出或寫我的當前版本#到一個文本文件。現在唯一的問題是如何讓這個版本號進入PHING屬性。Phing,調用一個命令得到它的輸出到一個屬性
現在我的PHING目標構建build.zip和built.tar,我希望它構建build-1.0.0.zip或版本腳本決定當前版本的任何內容。我怎樣才能做到這一點?我需要創建自己的「任務」嗎?
您可能需要爲此創建自己的任務。該任務可能看起來像......
<?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);
}
}
那麼你會在構建XML定義任務
<taskdef classname="VersionNumberTask" name="versiontask" />
然後調用任務
<target name="dist">
<versiontask versionprop="version.number"/>
</target>
在這一點上,你應該能夠在整個構建xml中使用$ {version.number}訪問版本號。
希望這會有所幫助!
另一種方法是使用ExecTask上的outputProperty
屬性在構建文件中提供屬性。
<target name="version">
<exec command="cat version.txt" outputProperty="version.number" />
<echo msg="Version: ${version.number}" />
</target>
,關於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" />
而且替代,並且在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}"/>
從CakePHP構建腳本複製。 – cgTag 2012-04-09 19:29:21