세 번이상 반복되는 것은 자동화하라.
개발자 자신을 위한 툴을 만들자.
제가 요즘 항상 마음속에 품고 있는 말입니다. 개발이나 어떤 일을 할 때, 보다 생산성이 높고, 실수할 확률이 적은 방법을 항상 찾으려고 하고 있답니다.
얼마전부터 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>
<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
[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
TRACKBACK :: http://naratalk.com/trackback/127
-
Subject: eclipse에서 ant ftp task 사용하기
Tracked from SJAVA :: HTTP://WWW.SJAVA.NET 삭제ANT로 빌드파일(build.xml)을 만들고, 빌드파일을 통해서 컴파일된 바이너리를 FTP로 전송할 수 있는 기능이 있습니다. 단계는 아래와 같습니다. 1. ftp 라이브러리 설치 http://commons.apache.org/net/의 최신버전을 다운로드 받습니다. 다운로드 받은 라이브러리인 commons-net-1.x.x.jar 파일을 이클립스가 설치된 폴더/plugins/ant설치버전/lib 폴더에 카피를 합니다. 참고로, 현재 최신버전은 c..
2008/06/27 11:40
maverick-ant.zip
댓글을 달아 주세요
궁금한 사항이 있어서 그런데요.. 이클립스에서 어떻게 실행해야 하나요? Run As 로 해서 ANT로 실행하니 에러가 발생하는데...
2007/11/21 17:53http://naratalk.com/96
2007/11/22 09:01를 참조하시면 됩니다.
이클립스의 메뉴에서 Windows->Show View 에서 Ant 선택후 빌드 파일을 추가하세요~ 그러면 타겟이 볼일것입니다 ^^
퍼갈꼐요^_^
2009/01/05 17:05