7

# 現在のリリースを検索して出力したり、テキスト ファイルに書き込んだりできるスクリプトがあります。唯一の問題は、このバージョン番号を PHING プロパティに取得する方法です。

現在、私の PHING ターゲットは build.zip と built.tar をビルドしています。build-1.0.0.zip またはバージョン スクリプトが現在のバージョンを決定するものをビルドしたいと考えています。これどうやってするの?独自の「タスク」を作成する必要がありますか?

4

4 に答える 4

15

別のアプローチはoutputProperty、ExecTaskの属性を使用して、ビルドファイルにプロパティを提供することです。

<target name="version">
  <exec command="cat version.txt" outputProperty="version.number" />
  <echo msg="Version: ${version.number}" />
</target>

詳しくは

于 2011-04-06T13:54:50.467 に答える
7

これには、独自のタスクを作成する必要がある場合があります。タスクは次のようになります...

<?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} を使用してバージョン番号にアクセスできるはずです。

お役に立てれば!

于 2009-12-04T03:31:28.433 に答える
5

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" />
于 2012-04-09T19:28:39.843 に答える
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}"/>

詳しくは

于 2013-11-26T18:38:11.607 に答える