0

私のビルド スクリプトは、ビルドの 4 つの異なる名前を作成します。

STP_13_00_00_00_RC01
STPMON_13_00_00_00_RC01
STPWEB_13_00_00_00_RC01
STPPRODUCTS_13_00_00_00_RC01

スクリプトが名前**STP_13_00_00_00_RC01**でビルドを作成するときに、フォルダーを作成し、そのフォルダーにtarファイルをコピーしてから、もう1つのフォルダーを作成する必要がありますが、ビルド名が他の名前STPMON、STPWEB.STPPRODUCTSで始まる場合は、それが必要ですフォルダーを作成し、そのフォルダーに tar ファイルをコピーするだけなので、以下の条件を使用しました。

</xsl:element>
<xsl:element name="gzip">
  <xsl:attribute name="destfile"
    >${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
  <xsl:attribute name="src"
    >${archive.base}/${gbl.dist.label}.tar</xsl:attribute>
</xsl:element>
<xsl:choose>
  <xsl:when test="contains(node,'STP')">
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}</xsl:attribute>
    </xsl:element>
    <xsl:element name="copy">
      <xsl:attribute name="file">${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
      <xsl:attribute name="todir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}/</xsl:attribute>
      <xsl:attribute name="overwrite">no</xsl:attribute>
    </xsl:element>
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${soa.release.version}</xsl:attribute>
    </xsl:element>
  </xsl:when>
  <xsl:otherwise>
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}_Test</xsl:attribute>
    </xsl:element>
    <xsl:element name="copy">
      <xsl:attribute name="file"
         >${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
      <xsl:attribute name="todir"
         >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}_Test/</xsl:attribute>
      <xsl:attribute name="overwrite">no</xsl:attribute>
    </xsl:element>
  </xsl:otherwise>
</xsl:choose>
4

1 に答える 1

0

あなたの選択命令は条件に応じて分岐します

contains(node,'STP')

これには少なくとも1つ、おそらく2つの問題があります。

問題の説明では、という名前のビルドでは一方向に動作し、名前が、、、またはで始まるビルドでは異なる動作をしたいとしてい STP_13_00_00_00_RC01ます。ただし、これらのビルド名にはすべて文字列「STP」が含まれているため、テスト条件ではそれらを区別することはできません。言い換えれば、あなたが何を意味するのかを言っていないので、あなたのコードはあなたが望むことをするつもりはありません。STPMONSTPWEBSTPPRODUCTS

あなたはテストが決して成功しないと言います(スタイルシートは常にotherwiseブランチを取っています)。これは、式nodeが、期待しているように見える文字列にも、期待している文字列に強制変換される可能性のあるドキュメントノードにも評価されていないことを示しています。考えられる原因は次のとおりです。

  • XMLには。という名前の要素がありませんnode
  • XMLには、という名前の要素nodeがありますが、コードの引用元のテンプレートのコンテキストノードの子ではありません。
  • XMLにはnode、コンテキストノードの子であるという名前の要素がありますが、その文字列値はビルドの名前ではありません。

これらはどれでも可能ですが、推測しなければならないのであれば、それが最初のものだと思います。

于 2013-02-13T22:41:38.840 に答える