0

我的构建脚本创建了 4 个不同的 Build 名称

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 文件复制到该文件夹​​中,然后它应该再创建一个文件夹,而如果构建名称以其他名称 STPMON,STPWEB.STPPRODUCTS 开头,那么它应该只需创建文件夹并复制该文件夹中的 tar 文件所以我使用了以下条件。但是对于所有构建,它都会进入其他条件,要么构建是使用 STP 创建的

</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')

这至少有一个问题,而且可能有两个。

您对问题的描述说您希望对名为 的构建采取一种方式,而对名称以、或 STP_13_00_00_00_RC01开头的构建采取不同的方式。但是所有这些构建名称都包含字符串“STP”,因此您的测试条件无法区分它们。换句话说,你的代码不会做你想做的事,因为你没有说出你的意思。STPMONSTPWEBSTPPRODUCTS

你说测试永远不会成功(样式表总是在otherwise分支)。这表明该表达式node没有评估您似乎期望的字符串,也没有评估可能被强制转换为您期望的字符串的文档节点。可能的原因包括:

  • 您的 XML 没有名为 的元素node
  • 您的 XML 有一个名为 的元素node,但它不是引用您的代码的模板的上下文节点的子节点。
  • 您的 XML 有一个名为 的元素node,它是上下文节点的子节点,但它的字符串值不是构建的名称。

这些都是可能的,但如果我不得不猜测,我猜这是其中的第一个。

于 2013-02-13T22:41:38.840 回答