2013-12-20 3 views
1

일부 표준 타겟 (디버그, 릴리즈, 설치, 클린 등)을 사용하여 Ant로 빌드 된 안드로이드 프로젝트가 있습니다. 나는 같은 명령으로 여러 대상을 실행할 수있는 것으로 나타났습니다 :이 경우 "디버그"다음에 "깨끗한"실행됩니다 서브 타겟에 여러 타겟 전달하기

ant clean debug 

이 프로젝트를 빌드합니다. 이것은 잘 작동합니다.

또한 첫 번째 마스터 프로젝트가 의존하는 Ant로 빌드 된 다른 프로젝트가 있습니다. 프리 빌드 단계에서 서브 프로젝트를 자동으로 빌드하려고합니다. 지금까지 나는이 있습니다

<target name="-pre-build">   
    <subant target="${ant.project.invoked-targets}" failonerror="true"> 
     <fileset dir="../other_project" includes="build.xml" /> 
    </subant> 

    <!-- (additional steps here) --> 
</target> 

이 하나 개의 대상에 대해 작업 (예 : ant debug는) 내가 여러 대상을 실행할 때 (예를 들어 ant clean debug는) 나는 다음과 같은 오류 얻을 : 분명히 invoked-targets

Target "clean,debug" does not exist in the project "com.foo.other_project" 

는 쉼표 내가 가장 큰 각각에 대해 하위를 다시 실행하고 싶을 때 - 분리 된 목록. 아무도 이것을 달성하는 방법을 알고 있습니까? 하위 목록에 대상 목록을 전달하거나 대상을 한 번 반복하여 목록을 반복하고 하위 항목을 실행하는 방법이 있습니까?

감사합니다.

You can specify multiple targets using nested "target" elements instead of using the "target" attribute. These will be executed as if Ant had been invoked with a single target whose dependencies are the targets so specified, in the order specified.

예가 또한 제공된다 :

답변

1

documentation는 여러 대상을 지정하는 방법을 설명

<subant failonerror="false"> 
    <fileset dir="." includes="**/build.xml" excludes="build.xml"/> 
    <target name="clean"/> 
    <target name="build"/> 
</subant> 
+0

덕분 응답하는 단계; 이것은 하드 코드 된 값에 대해서 작동하지만''은 여전히 ​​동일한 오류 (타겟 "clean, debug"가 존재하지 않음)로 실패합니다. 쉼표로 구분 된 값을 분리하고 여러 개의 ''노드를 동적으로 시뮬레이트하는 방법이 있습니까? – Alan

+0

@Alan 오류 메시지를 잘못 이해했습니다. 쉼표로 구분 된 목록을 대상 이름으로 제출할 수 없으며 해당 목록을 반복 할 수 없습니다. 그것이 "하위"작업의 여러 "대상"요소로 수행 할 수있는 작업입니다. 예, ant-contrib "for"작업을 사용하여 쉼표로 구분 된 목록을 반복 할 수는 있지만 프로젝트에 추가 jar를 추가해야합니다 (표준 ANT에 포함되지 않음). –

+0

타겟 이름을 하드 코딩하지 않고 여러 "target"엘리먼트를 얻는 방법에 대해 아직도 명확하지 않습니다. "깨끗한 디버그"는 단지 예일 뿐이며, 호출 된 타겟에 관계없이 작동하도록하고 싶습니다. 개미가 의존성 지향적이라고 들었는데, 그 생각으로 문제는 : master_project의 모든 대상 (예 : "깨끗한", "디버그", "foo")은 other_project의 같은 이름을 가진 대상에 따라 달라집니다. – Alan