2012-05-25 3 views
1

다른 환경 (예 : UAT, 공연, 프로덕션 등)에 맞게 제작해야하는 Android 앱이 있습니다. 각 환경마다 다른 속성 (예 : URL, 패키지 등)이 필요합니다.개미의 속성 파일에있는 변수

모든 다른 매개 변수를 단일 속성 파일에 넣고 각 매개 변수 앞에 일치하는 환경을 추가하고 싶습니다.

예를 들어 속성 ​​파일에는 개발 환경의 경우 dev.home-url = http://home_dev.com, 프로덕션 환경의 경우 prod.home-url = http://home.com이 포함됩니다.

내가 params의 접두사로 파일 속성을 가리키는 속성을 만들기 위해 아래 사용

<property file="parameters.properties" prefix="params" /> 

그리고 속성을 사용하는, 내가 사용

${params.home-url} 

문제가 온다 환경의 접두어를 매개 변수에 추가해야 할 때. 그것은 분명히 할 수없는이,처럼 보이는 끝낼 것 :

${params.${env-prefix}.home-url} 

답변

6

A가 자주 개미에 대해 질문을하는 것입니다 :

How can I do something like <property name="prop" value="${${anotherprop}}"/> (double expanding the property)?

다음 Ant 빌드 파일이 그 영감을했다 자주하는 질문.

parameters.properties

dev.home-url = http://home_dev.com 
prod.home-url = http://home.com 

의 build.xml

<project default="example"> 
    <property name="env-prefix" value="dev" /> 
    <property file="parameters.properties" prefix="params" /> 

    <macrodef name="propertycopy"> 
     <attribute name="name" /> 
     <attribute name="from" /> 
     <sequential> 
      <property name="@{name}" value="${@{from}}" /> 
     </sequential> 
    </macrodef> 

    <target name="example"> 
     <propertycopy name="local.property" from="params.${env-prefix}.home-url" /> 
     <echo>${local.property}</echo> 
    </target> 
</project> 

실행 example 태스크 출력 :

Buildfile: /workspace/build.xml 
example: 
    [echo] http://home_dev.com 
BUILD SUCCESSFUL 
Total time: 405 milliseconds 
+0

외부 호텔 판독 에코 단지 파일 파일의 해당 등록 정보 값 대신 $ {params. $ {env-prefix} .home-url}을 인쇄합니다. – Stimsoni

+0

외부 속성 파일에서도 시도해 보았습니다. 내가 한 일을 반영하도록 내 대답을 업데이트했습니다. 프로퍼티가 프로퍼티 파일에 존재하지 않으면'$ {params.dev.home-url}'을 얻을 것이다. 어떤 버전의 Ant를 사용하고 있습니까 (' $ {ant.version}')? 나는 1.8.2를 사용하고있다. – creemama

+0

아, 나는'env-prefix'가 정의되어 있지 않으면보고있는 동작을 얻습니다. 명령 행에서 Ant 빌드 파일을 실행하려고한다면,'ant -Denv-prefix = dev'를 실행하십시오. – creemama