낭푼이의 블로그

널리 퍼트릴만한 여러가지 이야기

Ant FilterReader와 FilterChain설명

without comments

Ant의 FilterReader와 FilterChain은 Unix의 Pipe처럼 한쪽의 출력을 다른쪽의 입력으로 사용하기 위한 메커니즘으로, FilterReader로 읽어 들인것들을 FilterChain으로 묶어 다른 쪽의 입력으로 사용 할 수 있다. 

이해하기 쉽게  먼저 예제를 살펴보자.

  • 위 예제는  ${src.list}파일을 읽어들여 target.list라는 속성에 읽어들인 파일의 내용을 세팅(로딩) 하고 있는데, 이 때 target.list에 그냥 세팅을 하는게 아니라, 먼저 해당파일의 공백 라인은 건너뛰고(ignoreblank 필터리더), 역(reverse) 소팅을 해서 (sortfilter 필터리더) 읽어들인 후, target.list에 세팅을 하고 있다.
  • ignoreblank, sortfilter 두개의 필터리더가 하나의 filterchain으로 묶여 있고, loadfile Task가 이 nested element형태로 filterchain을 사용하고 있다.

Ant에서 FilterChain을 사용할 수 있는 Task는 ConcatCopyLoadFileLoadPropertiesMove 가 있으며, 각종 FilterReader들은 메뉴얼을 참조하면 된다.

아래 예제에서는 대상 디렉토리에서 복수개의 VisualStudio의 csproj파일을 복사하고 있는데, 이 때 파일을 그냥 복사하는게 아니라, 파일내의 내용을 특정 규칙에 맞추어 수정하고 복사하고 있다.

각 라인별로 “   <SccProjectName>어쩌고저쩌고</SccProjectName>“, “   <SccLocalPath>어쩌고저쩌고</SccLocalPath>“,”   <SccProvider>어쩌고저쩌고</SccProvider>“이 들어간 부분은 공백처리하고,공백으로만 되어 있는 라인은 없앤 체로 복사하도록 하고 있다.

참고로 Ant는 스크립트를  XML형식으로 표시하다 보니 xml 태그에 관련된 문자는 별도로 주의 해서 표시 해주어야 한다.
(예 < 문자를 표현 하려면 &lt; 으로 표시)

 

Written by nangpuni

1월 29th, 2013 at 7:45 오후

Leave a Reply