2013-02-13 4 views
0

스크립트는 폴더를 생성하고 해당 폴더에 tar 파일을 복사해야합니다 이름 **STP_13_00_00_00_RC01**로 빌드를 만들 때 내 빌드 스크립트가옵션이 작동하지 않는 선택

STP_13_00_00_00_RC01 
STPMON_13_00_00_00_RC01 
STPWEB_13_00_00_00_RC01 
STPPRODUCTS_13_00_00_00_RC01 

그래서 내가 원하는 빌드 4 다른 이름을 만들고 그 이후에 하나 이상의 폴더를 만들어야하는 반면 빌드 이름이 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> 
조건

contains(node,'STP') 
이 적어도 하나의 문제가

, 아마도 두에3210

답변

0

당신의 선택 명령 분기합니다.

문제에 대한 귀하의 설명은 STP_13_00_00_00_RC01라는 빌드 한 방식으로 작동하기 원하고, 다르게는 이름이 STPMON, STPWEB, 또는 STPPRODUCTS로 시작하는 빌드에 대해 말한다. 그러나 모든 빌드 이름에는 문자열 'STP'가 포함되어 있으므로 테스트 조건은 이들을 구별하지 않습니다. 즉, 코드가 의미하는 바를 말하지 않았기 때문에 코드가 원하는 것을 수행하지 않습니다.

테스트가 성공하지 못한다고합니다 (스타일 시트는 항상 otherwise 브랜치를 사용하고 있습니다). 이는 표현식 node이 예상 한 것으로 보이는 문자열이나 예상 한 문자열로 강제 변환 될 수있는 문서 노드를 평가하지 않는다는 것을 의미합니다. 가능한 원인은 다음과 같습니다.

  • XML에 node이라는 요소가 없습니다.
  • XML에 node이라는 요소가 있지만 코드가 인용 된 템플리트의 컨텍스트 노드의 하위 노드가 아닙니다.
  • XML에 node이라는 요소가 있습니다.이 요소는 컨텍스트 노드의 자식이지만 해당 문자열 값은 빌드 이름이 아닙니다.

이들 중 어느 것도 가능하지만 추측해야만한다면, 이것이 처음이라고 생각합니다.

관련 문제