태그 : rake

Rake를 사용해 보고

이제까지 자바 프로젝트에서 빌드 툴로 ant를 사용해왔다.  그러나 ant만으로는 빌드를 유연하게 구성하는 게 복잡했다.  xml을 사용하기 때문에 코드도 복잡하고 기본적인 제어 구문도 사용하기 복잡했다.  ant 안에서 스크립트를 실행시킬 수도 있으나 배보다 배꼽이 커지는 격이다.

그래서 이제까지 빌드 스크립트는 ant를 이용해서 compile, jar pack, unit testing을 하고 그 외의 부분(파일 조작, 원격 전송 등)은 셸 스크립트를 이용해왔다.  셸 스크립트로 충분하긴 했지만 좀더 간결하고 강력한 기능이 아쉬울 때도 있었다.  그러다 만난 것이 rake였다.

rake는 ruby 언어를 이용한 빌드 툴이다.  ant처럼 xml을 쓴다던가 또는 특별한 종류의 문법을 이용해서 빌드 스크립트를 작성하지 않고 ruby 언어를 그대로 이용해서 빌드 스크립트를 작성한다.  다양하게 변신할 수 있는 ruby 언어의 또 다른 변신 모습을 볼 수 있다.

rake를 쓰기 위해서는 Rakefile을 작성해야 한다(마치 make를 위해 Makefile을 작성하는 것처럼). 이 Rakefile을 ruby 언어로 작성하는데 전용 클래스와 메서드를 이용하고 코딩 스타일을 조금 다르게 해서 작성하므로 전체적인 모양새는 Makefile과 비슷하다.

rake에서 make나 ant의 target에 해당하는 것이 task이다.  task에는 task, file, directory, rule이 있는데 이들은 모두 메서드로 첫번째 인자가 target이고 두번째 인자가 동작을 지정한 block이다.  그래서 이 task도 loop나 block에 넣어서 지정할 수도 있다.  그 외에 파일 시스템 조작을 위한 fileutils와 shell 명령 실행을 위한 FileUtils가 기본 포함되어 있다는 것을 제외하면 일반 ruby 스크립트를 작성하듯이 작성하면 된다.

task :name => [:prereq1, :prereq2] do
    print "blabla"
end

file "sample.txt" do
    # file 작업
end

rule '.o' => ['.c'] do |t|
    sh "cc #{t.source} -c -o #{t.name}"
end

rake는 ruby 문법을 모르면 잘 사용하기 힘들다. 일단 ruby 문법만 알면 tutorial과 reference를 보면서 금세 익힐 수 있다. 나도 rake tutorial과 user guide를 읽고 난 후 reference를 뒤져 가며 대략 하루만에 쓸만한 빌드 스크립트를 만들 수 있었다.

Rakefile을 작성할 때 참조한 문서는 다음과 같다.  ruby 문서에는 빠져 있는 내용도 꽤 있어서 인터프리터로 객체를 조사해 보면서 참조해야 하는 경우도 많다.  그게 좀 아쉽기는 한데 ruby 언어 자체가 좀 그렇게 제멋대로인 면이 있는 거 같다.

by Corund | 2007/03/16 08:10 | 트랙백

◀ 이전 페이지다음 페이지 ▶