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


세 번이상 반복되는 것은 자동화하라.

개발자 자신을 위한 툴을 만들자.

제가 요즘 항상 마음속에 품고 있는 말입니다. 개발이나 어떤 일을 할 때, 보다 생산성이 높고, 실수할 확률이 적은 방법을 항상 찾으려고 하고 있답니다.

얼마전부터 Ant 와 CVS 등을 이용해서 개발 환경을 좀더 편리하게 바꾸고 있는데, 제가 작업하는 Windows 와 FreeBSD 는 Ant 와 FTP, CVS 를 이용해서 작업이나 디플로이등이 무척 편리해졌습니다.  하지만 최종적으로 디플로이를 해야하는 서버의 경우는 외부 네트워크에 있는 데다가 SSH, SFTP 로만 접속이 가능합니다. Ant 의 task 를 보니 sftp 는 지원을 하지 않더군요. 그래서 그동안은 FileZilla 를 이용해서 수동으로 디플로이를 했습니다.

하지만, 개발을 진행하면서 하나, 둘 수정 사항이 생기고 디플로이 작업이 많아지자, 위에 써놓은대로 자동화를 해야 겠다는 생각이 들었습니다. 그래서 찾은 것이 maverick-ant


그래서 당장 테스트를 해보았습니다.

위 홈페이지에서 받은 파일을 압축을 풀면 lib 디렉토리에 maverick-ant.jar 가 있습니다.  이 파일을 클래스패스에서 찾을 수 있도록 해주는 것이 필요합니다. 또는 build.xml 에서 classpath 를 지정해 줄 수도 있습니다. 저 같은 경우는 eclipse 에서 쓰고자 했기 때문에 지난번 포스팅: Eclipse에서 Ant 를 활용하는 방법 에서와 같이 Ant 의 Runtime 에 등록해 둡니다.

이것으로 환경설정은 끝입니다.

이제 Ant 설정화일(build.xml 과 같은)을 만들어야 하는데, 제가 쓰고 있는 설정화일의 내용입니다.


<?xml version="1.0" encoding="utf-8" ?>
<project name="SFTP_TO_108SERVER" default="upload" basedir=".">
    <property name="ftp.server" value="123.123.123.123" />
    <property name="ftp.port" value="220" />
    <property name="ftp.home.dir" value="/usr/local/apache-tomcat/webapps/bridge/WEB-INF" />
    <property name="ftp.userid" value="hkshin" />
    <property name="ftp.pw" value="123.123.123" />
   
    <taskdef name="ssh" classname="com.sshtools.ant.Ssh" />
   
    <target name="upload">
        <ssh host="${ftp.server}" port="${ftp.port}"
             username="${ftp.userid}"
             password="${ftp.pw}"
             version="2">
            
             <sftp action="put" remotedir="${ftp.home.dir}" verbose="true">
                 <fileset dir="." >
                     <include name="**/*.java" />
                     <include name="**/*.properties" />
                 </fileset>
             </sftp>
          </ssh>
    </target>
   
</project>

보시다시피 확장자가 java 와 properties 인 내용만 전달하는 것입니다.

내용이 너무 간결하지 않나요? ^^ 제대로 동작하는 거 확인하고 나서 얼마나 즐거웠는지..
아래는 eclipse 에서 동작하는 모습입니다.

upload:
      [ssh] Initializing J2SSH Maverick
      [ssh] SSH2 is supported
      [ssh] Configuring SSH contexts
      [ssh] SSH2 default cipher Blowfish will be used
      [ssh] Setting SSH2 default MAC to MD5
      [ssh] Creating connection to 123.123.123.123:220
      [ssh] Connecting....
      [ssh] Authenticating hkshin
      [ssh] Performing password authentication
      [ssh] Password Authentication completed
      [ssh] Operating system is Linux [linux-gnu]
      [ssh] Using simple pattern matcher
      [ssh] Setting the remote directory
      [ssh] Remote directory is /usr/local/apache-tomcat/webapps/bridge/WEB-INF
      [ssh] Sending files
      [ssh] Local dir is D:\XXXXXX
      [ssh] Transfering 12 files
       ....
      [ssh] transferring D:\XXXXXXX\Util.java to /usr/local/apache-tomcat/webapps/bridge/WEB-INF/src/XXXXXXX/Util.java
      [ssh] 12 files Sent
      [ssh] Disconnecting from 123.123.123.123
BUILD SUCCESSFUL
Total time: 13 seconds



신고
2 Trackback, 3 Comment

댓글을 달아 주세요

  1. tester  댓글주소  수정/삭제  댓글쓰기

    궁금한 사항이 있어서 그런데요.. 이클립스에서 어떻게 실행해야 하나요? Run As 로 해서 ANT로 실행하니 에러가 발생하는데...

    2007.11.21 17:53 신고
    • Favicon of http://shinnara.tistory.com BlogIcon Shinnara  댓글주소  수정/삭제

      http://naratalk.com/96
      를 참조하시면 됩니다.

      이클립스의 메뉴에서 Windows->Show View 에서 Ant 선택후 빌드 파일을 추가하세요~ 그러면 타겟이 볼일것입니다 ^^

      2007.11.22 09:01 신고
  2. Fox  댓글주소  수정/삭제  댓글쓰기

    퍼갈꼐요^_^

    2009.01.05 17:05 신고

다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)

티스토리 툴바