2013-03-14 1 views
1

다음은 예제 대상입니다. 쉼표로 "* */*"과 "표지"를 구분할 수 있기 때문에 모든 것을 삭제하려고합니다. 이해할 수 있습니다.Ant에서는 파일 이름에 쉼표가있는 파일을 어떻게 지정합니까?

<target name="clean"> 
    <delete 
     verbose="true"> 
     <fileset dir="." includes="**/*.pyo"></fileset> 
     <fileset dir="." includes="**/*,cover"></fileset> 
    </delete> 
</target> 

어떻게 쉼표를 넣을 수 있습니까?

다른 운영 체제 용 빌드 시스템을 유지 관리 할 필요가 없도록 Ant를 배우려고합니다. 이 경우 Python 환경에서 *, 커버 파일은 Coverage이라는 코드 커버리지 검사 도구로 생성됩니다. 당신은 삭제하지 않는 커버로 끝나는 이름을 가진 다른 파일이 없다면

+0

\ (백 슬래시) 문자로 이스케이프 해 보셨습니까? – MattDMo

+0

예, 했어요. 나는 또한 Sheryl의 제안을 두 개의 백 슬래시로 시도했지만 그 역시 도움이되지 않았습니다. –

답변

1

당신은 이것을 벗어날 필요가 없습니다. includes arg 대신 <include/>을 사용하면됩니다. 이것을 시도하십시오 :

<project name="test" default="clean"> 

    <dirname property="build.dir" file="${ant.file.test}" /> 

    <target name="clean"> 
     <delete> 
      <fileset dir="${build.dir}/test"> 
       <include name="**/*,*.xml" /> 
      </fileset> 
     </delete> 
    </target> 

</project> 

그건 그렇고. dir 인수에 . (점)을 사용하면 안됩니다. build.xml 파일이있는 디렉토리의 파일을 삭제하려면 절대 경로를 전달해야합니다 (예를 들어 <dirname/>을 사용하면됩니다). .을 사용하면 중첩 된 빌드에 문제가 발생합니다. 에서

MAINDIR/build1.xml

<delete dir="." includes="**/*.txt" /> 
<!-- call clean target from build2.xml --> 
<ant file="./subdir/build2.xml" target="clean"/> 

MAINDIR/하위 디렉터리/build2.xml

<delete dir="." includes="**/*.txt" /> 

: 당신이 가지고하자 imageine는 파일 삭제하지만 먼저 빌드는 두 번째 빌드를 부르는 구축 이 경우 build2.xml은 subdir의 * .txt 파일을 삭제하지 않지만 ant 속성은 build2.xml에 전달되므로 maindir의 * .txt 파일을 삭제합니다. 물론 inheritAll="false"을 사용하면 이것을 생략 할 수 있지만 내 경험에 비추어 볼 때 경로에서 .을 사용하면 많은 문제가 발생할 것입니다.

+0

그게 효과가! ''트릭을했습니다! dir = "."에 대한 좋은 지적 - 내가 바꿀거야. 매우 감사합니다! –

0

, 그냥 쉼표를 생략 : 당신이 덮개로 끝나는 다른 파일이있는 경우

<fileset dir="." includes="**/*cover"></fileset> 

당신 돈 삭제하고 싶지 않으면 MattDMo의 코멘트에서 백 슬래시 제안을 시도하십시오. 이중 백 슬래시 ("**/*\\,cover")가 필요할 수 있습니다.

다른 가능성 : 출력을 다른 디렉토리에 저장하도록 설정하여 전체 디렉토리를 삭제할 수 있습니까? 또는 다른 출력 파일 이름을 사용하도록 구성하여이 문제가 발생하지 않도록 할 수 있습니까? 내가 Coverage에 익숙하지 않지만 제공 한 링크를 보면 data_file 옵션이 그 중 하나 또는 둘 모두를 수행 할 수있는 것처럼 보입니다.

+0

중간 솔루션으로 쉼표를 사용했습니다 (두 개의 백 슬래시가 아무런 차이가없는 것 같습니다). 아이디어를 가져 주셔서 감사합니다. –