Subdirectories에서 Ant Target을 여러 Build.xml 파일로 전달하십시오
문제
각각 자체 디렉토리에 여러 모듈이있는 프로젝트가 있습니다. 각 모듈에는 자체 개미 빌드 파일이 있습니다 (build.xml)
루트 디렉토리에서 각 모듈의 빌드 파일을 올바른 순서로 호출하는 일반 빌드 파일을 설정합니다.
<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
<target name="all">
<ant dir="corelib"/>
<ant dir="tools"/>
<ant dir="makeGdb"/>
<ant dir="cytoscape-plugin"/>
</target>
</project>
이제 각 모듈에는 "깨끗한"대상이 있으므로 다음을 추가합니다.
<target name="clean">
<ant dir="corelib" target="clean"/>
<ant dir="tools" target="clean"/>
<ant dir="makeGdb" target="clean"/>
<ant dir="cytoscape-plugin" target="clean"/>
</target>
그리고 더 많은 목표가 있습니다. 이 복제를 피하기 위해 빌드 파일을 다시 작성하는 방법이 있습니까? 활성 대상이 포함 된 내장 부동산을 찾았지만 찾을 수 없었습니다.
해결책
사용하지 않는 이유 앤탈 모든 서브 디르를 참조하는 대상을 호출하고 호출 할 대상을 매개 변수화합니다. 예를 들어
<antcall target="doStuffToSubdirs">
<!-- let's clean -->
<param name="param1" value="clean"/>
</antcall>
그리고:
<target name="doStuffToSubdirs">
<ant dir="corelib" target="${param1}"/>
<ant dir="tools" target="${param1}"/>
...etc
</target>
따라서이를 통해 서브 디르로 호출을 매개 변수화 할 수 있습니다. 새 하위 디어를 추가하면 해당 하위 디어를 'Dostufftosubdirs'대상에 추가하면됩니다 (나도 이름을 바꿀 것입니다!)
다른 팁
CommonBuild.xml에 하나의 깨끗한 대상을 넣고 자식 파일에 부모 build.xml을 가져 오십시오.
<import file="${parent.dir}/commonbuild.xml" />
이제 자녀 건물의 깨끗한 목표를 호출 할 수 있습니다. 자녀 빌드에서 깨끗한 대상을 만들어이 대상을 무시할 수도 있습니다.
제휴하지 않습니다 StackOverflow