Shinnara's Blog
Talking with Shinnara :: NaraTalk.com


처음 Groovy 를 알게 된 것이 Ant 의 Task 중의 Script task 를 보다가 접하게 되었는데, Ant 에서 Groovy 를 활용하는 방법에 대한 내용입니다. Script 를 사용할 수 도 있지만 오늘 보여드릴 예제처럼 taskdef 를 이용하실 수도 있습니다.

먼저 하고자 하는 것은 현재 폴더에 있는 파일들이 과거 특정 시점(여기서는 ant 를 실행했던 직전 시점) 이후에 고쳐진 파일이 무엇인지를 찾아내는 것입니다. 그간 이곳의 글들을 보신 분들은 아시겠지만 작업 환경을 꾸며나가는 과정에서 Ant 와 FTP 를 활용하고 있습니다. 그런데 FTP 를 이용한 업로드의 경우, 수정되지 않은 파일까지 모두 전송하게 되므로, 업로드 후에 빌드를 하려고 하면 처음부터 다시 빌드가 됩니다. 따라서 수정되지 않은 파일은 업로드 하지 않도록 하는 방법을 생각해보던 중에 Script 를 써서 해결하면 되지 않을까하여 접근하게 되었습니다.

일단, 오늘은 위에서 언급한 대로 새로 고쳐진 파일이 있는지를 확인합니다. 확인하는 방법은 직전의 ant 작업의 끝에 특정 파일을 생성합니다. 그리고 다시 ant 를 하게 하면 그 파일의 시간을 기준으로 삼고 새롭게 수정된 내용이 있는지를 확인하는 방법입니다.

제가 작성한 build.xml 파일입니다.

<?xml version="1.0" encoding="UTF-8" ?>
<project name="syncer" default="main" basedir=".">   
    <property name="dir.lib" value="/usr/local/groovy/lib"/>
    <property name="file.last" value="timestamp.log" />
    <taskdef name="groovy"
             classname="org.codehaus.groovy.ant.Groovy">
        <classpath>
          <fileset dir="${dir.lib}">
            <include name="**/*.jar"/>
          </fileset>
        </classpath>
    </taskdef>

    <target name="main">
        <groovy>
        lastTimestamp = (new File("${properties['file.last']}")).lastModified()
       
        files = new File(".").listFiles()
        files.each { if( it.lastModified() > lastTimestamp )
                      {
                        println it.toString() + " is newer!"
                      }
         }
       
        </groovy>
        <touch file="${file.last}" />
    </target>
</project>

실행하면 다음과 같은 결과를 보여줍니다.

[shinnara ~/groovy/work/syncer]$ touch a.out
[shinnara ~/groovy/work/syncer]$ ant
Buildfile: build.xml

main:
   [groovy] ./a.out is newer!

BUILD SUCCESSFUL
Total time: 4 seconds


groovy 를 제대로 활용하면 더욱 편리한 작업환경을 만들수 있을 것 같습니다.







TAG ,
0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/131 관련글 쓰기

댓글을 달아 주세요

1  ... 182 183 184 185 186 187 188 189 190  ... 264 
다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)