2009-06-29 8 views
0

로컬 윈도우 환경이나 레드햇 빌드 서버에서 동일한 ant 스크립트를 사용하여 빌드를하고 싶습니다.개미 : 동적 속성 참조하기

두 파일 (build_unix.properties & build_windows)에 'buildDirectory'변수가 있습니다. 환경에 따라 변수를 설정하고 싶습니다.

<osfamily property="os.family"/> 
<property file="./build_${os.family}.properties" /> 
<property name="tmp-base.folder" value="${buildDirectory}/tmp/"/> 

는 또한

<if> 
    <os family="unix"/> 
    <then> 
     <property file="./build_unix.properties" /> 
    </then> 
    <else> 
     <property file="./build_windows.properties" /> 
    </else> 
</if> 

어떤 아이디어를 시도?

+0

의 등록 정보 파일을 포함 할 수 있도록 당신은 또한 build-common.properties에 속성을 이동할 수 있습니다. 여기에서 가져온 속성은 액세스하려고 시도했을 때 아직 해결되지 않았을 수 있습니다. –

답변

0

if ... then ... else 버전이 제대로 작동 할 것으로 기대됩니다. 그것은 분명히 당신이하고있는 일을 생각하는대로 당신의 빌드를 확실히하기 위해 여분의 에코를 추가 할 것입니다.

  1. 그 안에있는 에코와 다른 것을 통해 어떤 경로가 실행되고 있는지 알 수 있습니다.
  2. 속성에 접두어를 추가하고 (예 : < 속성 파일 = "..."prefix = "test"/>) < echoproperties 접두어 = "test"/>를 추가하여로드되는 속성을 확인하십시오 아르.
1

처음에 os.family 속성을 자동으로 설정할 수있는 방법을 묻는 질문이 있으십니까?

<available file="C:\\" property="os.family" value="windows" /> 
    <available file="/usr/bin/" property="os.family" value="unix" /> 

아 :

이 그렇다면, 여기에 한 가지 방법입니다! 편집 된 질문은 당신이 무엇을 묻는 지 명확히 해줍니다. (이 아님), OS- 가족 결정을 위해 ant-contrib의 "osfamily"태스크를 사용하고있는 것을 볼 수 있습니다. 하지만 ant-contrib없이 ant를 사용하고있는 사람이라면이 대답을 남겨 둘 것입니다.

0

두 개의 파일이있을 수 있습니다

<copy file="build-${os.family}.properties" tofile="build.properties"> 

메인 build.xml 단순히 build.properties 파일을 참조 할 수 귀하의 : build-unix.propertiesbuild-windows.properites하고 init 대상에, 당신은 단순히 사본을한다.

이 작업을 제대로 수행하려면 매우 까다로울 수 있으므로 build.properties 파일에 빌드 서버의 모든 속성을 유지하고 로컬 재 지정 (Windows 상자의 경우)을 build-local.properties에 허용하는 것이 좋습니다. 빌드 파일은 다음과 같은 순서 문제는 문장의 위치 것으로 보인다

<property file="build-local.properties"/> 
<property file="build-common.properties"/> 
<property file="build.properties"/>