는 방법이 있을 일반화는 아파치 ANT target?
-
09-06-2019 - |
문제
우리가 아파치 ANT 스크립트를 구축하는 우리의 응용 프로그램은 다음 체크에서의 결과로 JAR 파일로 버전 제어(VSS 이 경우).그러나 이제 우리는 변화는 우리를 필요로 구축 2JAR 파일은 이 프로젝트에 대해 다음 확인을 모두으로 VSS.
현재 대상을 확인하는 원래 JAR 파일로 VSS 발견한 JAR 파일의 이름을 통해 제공합니다.이 있는 쉬운 방법을"일반화"이상할 수 있도록 재사용을 확인하는 JAR 파일에 어떤 이름?에서 정상적인 언어 이론에 대한 호출 기능 매개 변수이지만,내 지식,하지 않을 수도 있 해당하는 개념에서 ANT.
해결책
는 것이 좋습니다 것입니다 작업 매크로 이 subant/antcall 기 때문에 주요 장점을 발견으로 매크로는 당신이 완전히 통제를 통해 전달되는 속성을 매크로(특히 원하는 경우 추가하는 새로운 특성을).
당신은 단순히 리팩터링 Ant 스크립트로 시작하는 대상:
<target name="vss.check">
<vssadd localpath="D:\build\build.00012.zip"
comment="Added by automatic build"/>
</target>
매크로 생성(예 복사/붙여넣기 및 대체과@{파일}):
<macrodef name="private-vssadd">
<attribute name="file"/>
<sequential>
<vssadd localpath="@{file}"
comment="Added by automatic build"/>
</sequential>
</macrodef>
를 호출하는 매크로를 가진 파일을:
<target name="vss.check">
<private-vssadd file="D:\build\File1.zip"/>
<private-vssadd file="D:\build\File2.zip"/>
</target>
Refactoring,"개미는 방법으로"
다른 팁
그것은 일반적으로 고려하는 나쁜 아이디어 버전을 제어하는 바이너리 파일이지 않는 것이 좋습니다.그러나 만약 당신이 절대적으로 사용할 수 있습니다 antcall 와 결합 param 전달하는 매개변수를 호출 대상입니다.
<antcall target="reusable">
<param name="some.variable" value="var1"/>
</antcall>
<target name="reusable">
<!-- Do something with ${some.variable} -->
</target>
을 찾을 수 있습에 대한 자세한 정보 antcall 여기에 작업.
또한 체크 아웃 subant 작업할 수 있는 통화 같은 대상에서 여러 파일 구축:
<project name="subant" default="subant1">
<property name="build.dir" value="subant.build"/>
<target name="subant1">
<subant target="">
<property name="build.dir" value="subant1.build"/>
<property name="not.overloaded" value="not.overloaded"/>
<fileset dir="." includes="*/build.xml"/>
</subant>
</target>
</project>
제휴하지 않습니다 StackOverflow