문제

나는 빌드 스크립트를 가지고 있으며 해당 스크립트의 일부로 jar 파일을 디렉토리에 복사합니다. 쉽게 utils jar라고 부를 수 있습니다.utils jar는 다른 디렉토리에 있는 다른 빌드 스크립트에 의해 빌드됩니다.내가 하려는 작업은 빌드 스크립트가 utils 빌드 스크립트를 실행하여 utils jar가 최신 상태인지 확인할 수 있도록 하는 것입니다.

그래서 utils 빌드 파일을 가져와야 한다는 것을 알고 있습니다.

<import file="../utils/build/build.xml" />

거의 모든 다른 개미 작업과 달리 가져오기 작업은 basedir에서 실행되지 않고 pwd에서 실행되기 때문에 작동하지 않습니다.그래서 이 문제를 해결하기 위해 빌드 파일을 성공적으로 가져오는 작은 작은 부분이 있습니다.

  <property name="baseDirUpOne" location=".." />
  <import file="${baseDirUpOne}/utils/build/build.xml" />

이제 가져오기 문제를 해결했으므로 작업을 호출해야 합니다. 그러면 쉽습니다.

<antcall target="utils.package" />

위에서 utils는 ../utils/build/build.xml의 프로젝트 이름입니다.

지금 겪고 있는 문제는 ant 호출이 ../utils/build에서 실행되지 않기 때문에 내가 필요로 하지만 찾을 수 없는 것은 runat 속성이나 이와 유사한 것입니다. 본질적으로 다음과 같습니다.

<antcall target="utils.package" runat="../utils/build" />

이것이 필요한 이유는 내 유틸리티 빌드 파일에서 jar에 복사할 코드를 선택하는 단계가 내 개미 파일의 하드코딩 경로를 피하기 위해 상대 경로를 기반으로 하기 때문입니다.어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

비슷한 설정이 있습니다.내 테스트 빌드를 관리하는 별도의 build.xml을 호출하는 기본 Ant build.xml이 있습니다.이것이 내가 하는 방법이다:

<target name="build-tests">
    <subant target="build">
      <fileset dir="${test.home}" includes="build.xml"/>
    </subant>
</target>

비결은 다음과 같습니다. subant 대신에 antcall.다른 빌드 파일을 가져올 필요는 없습니다.

다른 팁

사용해 보세요 "개미" 작업 가져온 빌드를 현재 빌드 파일로 가져오는 대신 직접 실행하는 "antcall" 작업 대신."dir" 매개변수가 있습니다:

새로운 개미 프로젝트를위한 기반으로 사용하는 디렉토리.inheritall이 False로 설정되지 않는 한 현재 프로젝트 기반의 기본값은 기본값이 없습니다.이것은 호출 된 프로젝트의 기반 설정을 무시합니다.

그래서 당신은 할 수 있습니다 :

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />

또는 그런 것.

antcall 블록에 중첩된 매개변수를 사용하여 antcall에 매개변수를 전달할 수 있습니다.따라서 그런 식으로 속성을 전달할 수 있습니다(속성은 변경할 수 없으므로 basedir도 가능함).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top