2010-02-22 10 views
0

내 개미 파일에서 일부 속성을 설정하고 싶습니다. 이름은 개미의 빌드 속성을 기반으로합니다. 특히, 내가 좋아하는 속성을 설정하고 싶습니다 :Valid <property> Ant의 이름

<property name="${ant.project.name}.compiled" value="true" /> 

을 그러나, 나는 이것을 $ {ant.project.home} 부분이 확장되지 않은 시도 할 때.

다른 속성의 이름으로 속성의 값을 사용할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

+0

xml – avjaz

답변

0

유일한 방법은 .properties 파일에 값을 표시 한 다음 다시로드하는 것입니다. 그러나 실제로 필요한지 스스로에게 물어야합니다. 내가 마지막으로 개미를 사용했을 때 나는 똑같은 것을 시도했으나 정말로 필요가 없다고 결론 지었다.

은 $가

을 ant.project.home.compiled 마찬가지로 유용

아닌가?

+0

불행히도 $ ant.project.home.compiled를 이스케이프 처리하면 내게 도움이되지 않을 것입니다.필자가 미리 알지 못하는 이름의 프로젝트가 컴파일되었다는 플래그를 설정해야합니다. 따라서 다시 컴파일하는 오버 헤드를 피할 수 있습니다. – avjaz

+0

Ant는 파일을 다시 컴파일하지 않을 정도로 지능적입니다. 소스의 날짜를 확인하고 클래스와 비교하며 필요한 경우 다시 컴파일합니다. –

0

그래도 좀 못생긴 일입니다. 이 경우 에서 < propertycopy> 작업이 필요합니다. 다음은

<property name="projectNameCompiled" value="${ant.project.name}.compiled" /> 
<property name="${projectNameCompiled}" value="true" /> 
<propertycopy property="final" from="${ant.project.name}.compiled" /> 

속성 최종의 값 사실을 포함하는 예를 나타낸다.

2
<property name="name.holder" value="iamholder" /> 
<property name="${name.holder}.flag" value="true" /> 
<echoproperties></echoproperties> 

결과 :

[echoproperties] iamholder.flag=true 

이 확실히 유효 개미 코드 및 속성 iamholder.flag가 true의 값을 가져옵니다. $ {name.holder}가 확장되지 않으면 샘플의 첫 번째 줄이 누락 된 것처럼 아직 설정되지 않았 음을 의미합니다. 어쨌든이 방법은 여전히 ​​문제를 해결하지 못합니다. 이름을 알지 못하고 순수한 개미에서 중첩 된 해결을 수행 할 수 없으므로이 속성의 값을 가져올 수있는 방법이 거의 없기 때문입니다. 당신이하려는 일에 따라 여전히 유용 할 수 있습니다. 이 사람은 (속성이 설정되어 1.8까지 값이만큼 관계가 있음을 염두에 두어야) 일 것이다 :

<target name="compile_stuff" unless="${name.holder}.flag"> 
    <echo>compiling...</echo> 
</target> 

정말 당신이 개미의 contrib의 propertycopy를 사용할 필요가 같은 속성 값을 얻으려면 대답 중 하나에서 제안한대로 그렇게하면 이름을 알고있는 속성에서 값을 얻을 수 있습니다. 그냥 사용하기 전에 트릭을 수행하고 매개 변수를 true로 설정하십시오 (귀하의 게시물은 이와 같은 추가 속성을 설정 하겠지만 최종 속성을 변경할 수 없음을 의미합니다). 이러한 속성을 사용하여 작업하는 또 다른 옵션은 ant 매크로를 사용하는 것입니다.

0

실현 방법은 여러 가지가 있습니다. Ant FAQ
macrodef를 통한 가능한 해결책은 antcontrib/propertycopy 작업을 시뮬레이트하지만 외부 라이브러리가 필요하지 않습니다.

관련 문제