.load

.load [-o] [-e] [-v] [-j] [<relative_path>/]<filename>
.load -r|-p <registername>
.load -s `<命令名>`

.load 命令从 XML 文件装入项目,并将所装入项目的步骤添加到当前项目中,运行了 .load 命令的步骤执行完毕,将允许项目在运行时动态创建和装入步骤。您可以通过使用选项使 .load 命令从寄存器或从命令的输出提取其数据。

要为 .load 命令编写 XML 文件,请首先使用来自现有项目的导出文件来提供适当的基本结构。还可以在系统内创建项目,然后将其导出以便在 .load 命令中使用。本主题包含示例 XML 代码。

.load 命令装入的步骤可以包含对内联或已连接项目的引用。缺省情况下,系统在 XML 文件内查找内联项目的定义并装入这些项目的步骤;请参阅本主题后面部分的 -e 选项以了解让系统从数据库获取内联项目定义的方法。 无论对通过链式项目还是失败链式项目,系统始终在数据库中查找项目定义。

注: 对于通过 .load 运行的 JPO 步骤,已标识为“else 内联”的项目或库必须是系统中已经存在的项目或库,否则不会运行内联。

XML 文件中的多个项目

由于系统将内联项目随其调用方项目导出,因此 XML 文件可能包含若干项目。.load 命令运行在文件中标注为主项目的项目。该项目在其 <project> 元素中具有属性 primary="1"

命令选项和参数

最简单的命令格式为 .load <filename>。可以在文件名的前面加上可选的路径名(相对于作业目录)。例如,命令
.load ../../project.xml

将从服务器目录(包含项目和作业目录的目录)装入文件 project.xml,假定步骤的路径属性为“/”(缺省值)。

注: 正常步骤启动内联项目时,系统将访问数据库以获取该项目的当前定义;当 .load 命令导入的步骤启动内联项目时,系统将在 XML 文件内查找该内联项目的定义。有关避免这种情况的方法,请参阅下面对 -e 选项的描述。
注: 由 7.1 之前版本的 Build Forge 生成的步骤 XML 文件不受支持,可能会失败,因为这些元素通过名称而非标识引用。
注: .load 使用导入实用程序,因此会根据导入实用程序的设置来应用访问组所有权。 请参阅访问组如何指定给导入的对象以了解更多信息。
此命令的选项如下:
-r 或 -p
这些选项可使系统从寄存器装入步骤。请通过命令行使用这些选项。
.load -r|-p <registername>
-r 选项从普通寄存器装入步骤,而 -p 选项则从项目寄存器装入步骤。可以在项目前面的步骤中,在寄存器内构建数据,然后使用此命令从寄存器装入步骤。
-s
此选项可使系统运行命令并将该命令的输出用作要装入的数据。请使用命令行
.load -s `<命令名>`
-e
设置了 -e 选项时,系统将从数据库而不是从装入的 XML 文件获取内联项目。它将 chainID 的值视为对数据库内某个项目标识的引用。这将使您的 XML 文件能够引用内联项目的最新版本(而不是引用 XML 文件中的项目),或引用 XML 文件中不包含的项目。
-o
-o 选项用于禁用 XML 文件内的内联项目。使用此选项时,系统将忽略主项目内的任何内联项目。包含对内联项目的引用的步骤将运行其命令,但是忽略其内联。
-j
如果 XML 文件中的最后一组步骤和 .load 命令后的步骤都已线程化,请使用 -j 选项。-j 选项将最后线程化的步骤转化为连接步骤。否则,已线程化的步骤将成为 .load 命令后线程化步骤块的一部分。
-v
将装入的 XML 文件的内容发送到显示终端(stdout)以便查看。

示例 XML

下面的示例显示要与 .load 命令一起使用的 XML 文件。该 XML 文件是通过导出名称为 HelloWorldPlusInline 的项目创建的。

请注意此示例 XML 文件的下列详细信息:
  • 此 XML 文件包含两个 <project> 元素。
  • 此 XML 文件中的第一个项目是主项目;它具有属性 name="HelloWorldPlusInline"primary="1"
  • 此 XML 文件中的第二个项目称为 Sleepytime,具有指示它不是主项目的属性 primary="0"
  • HelloWorldPlusInline 的第一个步骤称为 EchoHelloWorld,其中包含一个 echo 命令和一个 chainID 属性。 chainID 属性有一个值 2,指示系统应内联标识为 2 的项目,即 Sleepytime 项目。
    注: 请忽略步骤属性 inline;不推荐此属性,因为已不再使用该属性。所有步骤都具有这个属性(值为 N)。要确定步骤是否具有内联项目,请查找属性 chainIDchainID 的值代表项目的标识。缺省情况下,系统在 XML 文件内查找内联项目,但是如果在 .load 命令中使用 -e 选项,那么系统会将该值视为数据库内的项目标识。这样,您就可以创建自己的 .load 文件夹,而无需在其中加入内联项目。
    注: 不支持针对由 V7.0.x 和更早版本的 Build Forge 生成的 XML 文件使用 .load,在上述情况下该命令无法正常运行,因为较早的语法通过名称而非 UUID 来引用对象。
  • 每个项目都有一个 id 属性。此标识值与数据库中该项目的标识相同。可以通过从安装目录执行下面的命令来获取项目标识列表:
    bfexport -l
  • commandStore 属性包含 <command> 元素的内容副本,以及通过 XML 转义的特定字符。例如,在 <command> 中,可能包含 "、'、&、<、> 或换行符。这些字符在 commandStore 中分别由 &quot;、&apos;、&amp;、&lt;、&gt; 和 &#10; 表示。

<?xml version="1.0" encoding="UTF-8"?>

<buildforge schema="7.115014" comment="">
  <project access="6" active="Y" name="HelloWorldPlusInline" primary="1"
   selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0"
   buildclass="Production" sticky="N" envId="0" tag="BUILD_$B" id="19" exclusive="0">
        <tagvar autoincrement="Y" name="B" id="1">2</tagvar>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="1" passwait="N" inline="N" threadable="N" chainId="2" 
     access="6" active="Y" passnotify="0" description="EchoHelloWorld" onfail=" " 
     failnotify="0" envId="0" commandStore="echo Hello World">
      <command>echo Hello World</command>
    </step>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="2" passwait="N" inline="N" threadable="N" access="6" 
     active="Y" passnotify="0" description="export proj to build and server folders" 
     onfail=" " failnotify="0" envId="0" 
     commandStore=".export $BF_PROJECTNAME_PHYS.xml&#10;copy /Y $BF_PROJECTNAME_PHYS.xml ..\..">
      <command>.export $BF_PROJECTNAME_PHYS.xml
copy /Y $BF_PROJECTNAME_PHYS.xml ..\..</command>
    </step>
  </project>
  <project access="6" active="Y" name="Sleepytime" primary="0"
   selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0"
   buildclass="Production" sticky="N" envId="0" tag="SLEEP_$B" id="2" exclusive="0">
        <tagvar autoincrement="Y" name="B" id="1">21</tagvar>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="1" passwait="N" inline="N" threadable="N" access="6" 
     active="Y" passnotify="0" description="Sleep, perchance to dream" onfail=" " 
     failnotify="0" envId="0" commandStore=".sleep 0">
      <command>.sleep 0</command>
    </step>
  </project>
  <class maxdays="0" access="1" entranceprojectId="1" name="Production" keepfiles="B"
   deletechangedata="N" purgeprojectId="2" exitProjectId="5" candidates="AnyBuild "
   maxbuilds="0"></class>
    <selector operator="" required="" access="6" value="" name="Choose_local" 
   selectorId="" property=""></selector>
</buildforge>


反馈