.load

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

.load 명령은 XML 파일에서 프로젝트를 로드하고 .load 명령을 실행한 단계 다음에 로드된 프로젝트의 단계를 현재 프로젝트에 추가하며, 프로젝트가 실행 시에 단계를 동적으로 작성하고 로드할 수 있게 합니다. 옵션을 사용하면, .load 명령이 레지스터 또는 명령 출력에서 데이터를 가져오게 할 수 있습니다.

.load 명령의 XML 파일을 작성하려면 기존 프로젝트에서 내보내기 파일로 시작하여 적절한 기본 구조를 제공하십시오. 또한 시스템에 프로젝트를 작성한 후 .load 명령에서 이를 사용하도록 내보낼 수 있습니다. 이 주제에는 샘플 XML 코드가 포함되어 있습니다.

.load 명령으로 로드된 단계는 인라인 또는 체인 프로젝트에 대한 참조를 포함할 수 있습니다. 기본적으로 시스템은 XML 파일에서 인라인 프로젝트의 정의를 찾고 단계를 로드합니다. 시스템이 데이터베이스에서 인라인 프로젝트 정의를 가져오도록 하는 방법은 이 주제에서 아래의 -e 옵션을 참조하십시오. 패스 체인 또는 실패 체인 프로젝트의 경우, 시스템은 항상 데이터베이스에서 프로젝트 정의를 찾습니다.

참고: .load에서 실행된 JPO 단계의 경우, else-inline 식별 프로젝트 또는 라이브러리는 시스템 내에서 이미 존재하는 프로젝트나 라이브러리여야 합니다. 그렇지 않으면 인라인이 실행되지 않습니다.

XML 파일의 다중 프로젝트

시스템이 호출 프로젝트와 함께 인라인 프로젝트를 내보내기 때문에 XML 파일은 여러 프로젝트를 포함할 수 있습니다. .load 명령은 파일에서 기본 레이블이 붙은 프로젝트를 실행합니다. 이 프로젝트는 <project> 요소에 대한 primary="1" 속성을 갖습니다.

명령 옵션 및 매개변수

가장 단순한 명령 양식은 .load <filename>입니다. 파일 이름 앞에 선택적 경로 이름(작업 디렉토리와 연관)을 포함시킬 수 있습니다. 예를 들어,
.load ../../project.xml

명령은 단계의 경로 특성이 "/"(기본값)라고 가정하고 서버 디렉토리(프로젝트 및 작업 디렉토리를 포함하는 디렉토리)에서 project.xml 파일을 로드합니다.

참고: 정상 단계가 인라인 프로젝트를 실행할 때 시스템은 데이터베이스로 이동하여 해당 프로젝트의 현재 정의를 가져옵니다. .load 명령으로 가져온 단계가 인라인 프로젝트를 실행할 때 시스템은 XML 파일에서 인라인 프로젝트의 정의를 찾습니다. 이런 상황을 방지하기 위한 방법은 아래 -e 옵션에 대한 설명을 참조하십시오.
참고: 7.1 이전의 Build Forge 버전에서 생성된 단계 XML은 지원되지 않으면 해당 요소는 ID 대신 이름으로 참조되므로 실패할 수 있습니다.
참고: .load는 가져오기 유틸리티를 사용하며 마찬가지로, 가져오기 유틸리티의 설정에 따라 액세스 그룹 소유권을 적용합니다. 추가 정보는 가져온 오브젝트에 액세스 그룹을 지정하는 방법을 참조하십시오.
명령에는 다음 옵션이 있습니다.
-r 또는 -p
이 옵션을 사용하면 시스템이 레지스터에서 단계를 로드합니다. 명령행을 이런 옵션과 함께 사용하십시오.
.load -r|-p <registername>
-r 옵션이 일반 레지스터에서 단계를 로드하는 반면, -p 옵션은 프로젝트 레지스터에서 단계를 로드합니다. 프로젝트의 이전 단계에서 레지스터에 데이터를 빌드한 후 이 명령을 사용하여 레지스터에서 단계를 로드할 수 있습니다.
-s
이 옵션을 사용하면 시스템이 명령을 실행하고 해당 명령의 출력을 로드할 데이터로 사용합니다. 다음 명령행을 사용하십시오.
.load -s `<command name>`
-e
-e 옵션이 설정된 경우, 시스템은 로드된 XML 파일 대신 데이터베이스에서 인라인 프로젝트를 가져옵니다. chainID 값을 데이터베이스 내 프로젝트 ID에 대한 참조로 간주합니다. 이 옵션을 사용하여 XML 파일이 XML 파일의 프로젝트 대신 인라인 프로젝트의 최신 버전을 참조하게 하거나 XML 파일에 포함되지 않은 프로젝트를 참조하게 할 수 있습니다.
-o
XML 파일의 인라인 프로젝트를 사용 불가능하게 하려면 -o 옵션을 사용하십시오. 이 옵션이 사용되는 경우, 시스템은 기본 프로젝트의 모든 인라인 프로젝트를 무시합니다. 인라인 프로젝트에 대한 참조를 포함하는 단계는 명령을 실행하지만 인라인을 무시합니다.
-j
XML 파일의 마지막 단계 세트가 스레드되었고 .load 명령 이후의 단계도 스레드된 경우 -j 옵션을 사용하십시오. -j 옵션은 마지막의 스레드된 단계를 결합 단계로 전환합니다. 이 옵션을 사용하지 않으면 스레드된 단계가 .load 명령 이후의 스레드된 단계 블록에 속하게 됩니다.
-v
보려는 표시 터미널(stdout)에 로드되는 XML 파일의 컨텐츠를 보냅니다.

샘플 XML

다음 예제는 .load 명령과 함께 사용할 XML 파일을 표시합니다. XML은 HelloWorldPlusInline이라는 프로젝트를 내보내 작성되었습니다.

XML 예제의 다음 세부사항을 참고하십시오.
  • XML은 두 개의 <project> 요소를 포함합니다.
  • XML의 첫 번째 프로젝트는 1차 프로젝트입니다. 이 프로젝트는 name="HelloWorldPlusInline"primary="1" 속성을 갖습니다.
  • XML의 두 번째 프로젝트는 Sleepytime이며 1차가 아님을 표시하기 위한 primary="0" 속성을 갖습니다.
  • HelloWorldPlusInline의 첫 번째 단계는 echo 명령과 chainID 속성을 포함하는 EchoHelloWorld라는 단계입니다. chainID 속성 값은 2이며, 시스템이 ID 2(Sleepytime 프로젝트)를 사용하여 프로젝트를 인라인해야 함을 표시합니다.
    참고: inline 단계 속성은 무시하십시오. 더 이상 사용되지 않는 권장하지 않는 속성입니다. 모든 단계에서 이 속성 값은 N입니다. 단계에 인라인 프로젝트가 있는지 판별하려면 chainID 속성을 찾으십시오. chainID 값은 프로젝트 ID를 참조합니다. 기본적으로 시스템은 XML 파일에서 인라인 프로젝트를 찾지만, .load 명령에 -e 옵션을 사용하는 경우 시스템은 해당 값을 데이터베이스 내 프로젝트 ID로 간주합니다. 따라서 인라인 프로젝트를 포함시키지 않아도 자체 .load 파일을 작성할 수 있습니다.
    참고: Build Forge 버전 7.0.x 이하에서 생성된 XML 파일에서 .load의 사용은 지원되지 않으며 이전 구문이 UUID가 아닌 이름으로 오브젝트를 참조하므로 올바르게 작동하지 않습니다.
  • 각 프로젝트에는 id 속성이 있습니다. 이 ID 값은 데이터베이스의 프로젝트 ID와 동일합니다. 설치 디렉토리에서 다음 명령을 실행하여 프로젝트 ID 목록을 가져올 수 있습니다.
    bfexport -l
  • commandStore 속성은 특정 문자 XML이 이스케이프 처리된 <command> 요소의 컨텐츠 사본을 포함합니다. 예를 들어 <command>에서 ", ', &, <, > 또는 줄 바꾸기가 포함될 수 있습니다. 문자는 &quot;, &apos;, &amp;, &lt;, &gt; 및 &#10;으로 각각 commandStore에 표시됩니다.

<?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>


피드백