Cassandra mmap 이슈로 소스를 살펴보고 있는데, 빌드 체계가  Ant-ivy에서 Ant-maven으로 바뀌었다. 이에 대한 이유를 살펴보도록 한다. 내가 속한 조직에서는 Ant + Ivy를 사용하고 있는데, 이에 대한 보완 또는 빌드 속도 향상에 도움이 되지 않을까 해서 공부해본다.

Ant-Ivy 구조에서 Ant-Maven으로 바뀐 부분에 대한 내용은 Cassadra에서 올라온 이슈(https://issues.apache.org/jira/browse/CASSANDRA-2017)를 살펴본다.

첫번째, cassandra가 플랫폼 형태로 쓰기 때문에 maven central repository로 올려야 사람들이 편하게 쓸 수 있어야 한다. ivy는 pom 파일을 생성하지 못하기 때문에 maven-ant-tasks 가 필요하다.
두번째, gpg 시그내처 (보안) 를 생성하기 위해서 ivy task를 또 다시 실행시켜야 하는 것이 있는데, maven-ant-task는 한번에 gpg 시그내처를 생성할 수 있다.
세번째, dependency 정보를 한곳에서 할 필요가 있다. (아마도 maven central에 올리면서 중복 정보가 생기는 부분에서 얘기가 된 것 같다. 오해를 위해서 ivy.xml 파일 하나에서 충분히 관리될 수 있다. ivy는 maven에 비해 보기는 편하다.)

이외에 빌드할때, dependency 체크가 ivy보다 빨라서 빌드 속도 개선이 되었다고 한다.

그래서 0.7.6부터 배포되었다.  (http://pkgsrc.se/databases/apache-cassandra)

아직 회사에서 사용하는 것이 특별히 이슈는 없지만, ant-maven으로 고민할 필요가 있다는 생각이 들었다..



Posted by 김용환 '김용환'



경험을 바탕으로 간단히.. maven(maven2) vs ivy 장단점 비교를 해보겠습니다.

-  의존성 다운로드
1) ivy : 선택에 의해서 다운로드 가능. 해당 jar외엔 아무것도 받지 않겠다라고 쓸 수 있음. 명시적인 lib 관리 가능
2) maven : 불필요한 jar도 다운받을 수 있습니다. 쓰지 않더라도 선언때문에 다운 받을 수 있고, 상황에 따라서는 exclude 해줘야 함. 
(운영상..  maven을 못 쓴 이유가 바로 이런 불편함이었습니다. 쉽게 운영을 위해서는 명시적인 lib 외엔 다른 것을 쓰지 않도록 하는 것이 더 편리하고 명확합니다. )

- 라이브러리 경합
1) ivy : 유연성 제공, 같은 라이브러리, 버젼일 때, conflict manager 사용가능
2) maven : 같은 라이브러리라도 다른 버젼이면 맨 처음 선언된 artifact에 맞춰 다운로드 됩니다. maven plugin에서는 이 부분이 달라진다.. 결국 버젼 관계를 설정할 방법이 없습니다.

- 의존성 lib 기술 방법
1) ivy : property 이용. 
2) maven : element 단위.

- 이클립스 상
1) ivy : jar만 다운받으면, ant 상에서 빌드 가능, 플러그인 설치 필요 없음
2) maven : m2 플러그인 설치를 통해서 빌드 해야 함

- 장점
1) ivy : ant와 동시에 쓰면서 세밀한 작업이 가능함. 디렉토리 위치를 편하게 관리. 복잡해질 수 있는 소지. ant 의 condition 같은 구린 것이 if / else로도 쓸 수 있도록 지원.
2) maven : 플러그인을 편하게 쓸 수 있음. 간단한 구조에 좋음.

- ivy의 단점 : 파일 이름에 명시적인 패턴을 요구 합니다.


* ant + ivy는 spring 3 에서 사용하고 있습니다. 그 외에서 reference하는 곳는 많지는 않은 듯 합니다.


* 경험상..
maven은 작은 모듈에 적합
ant+ivy는 배포서버나, 세밀함이 필요한 곳에 적합


<볼만한 ivy 이야기>

http://toby.epril.com/?p=557   

http://www.ibm.com/developerworks/kr/library/j-ap05068/index.html#listing1

http://objectopia.com/2009/06/21/a-robust-build-for-a-many-component-platform-using-aspects-of-maven-ant-and-ivy-part-1/

http://stackoverflow.com/questions/194125/is-ant-still-the-best-choice-for-a-java-build-tool



'etc tools' 카테고리의 다른 글

[ANT] fixcrlf  (0) 2010.07.29
maven의 exclusion 고민  (0) 2010.07.21
ivy vs maven 2 비교 자료  (0) 2010.07.07
Load Runner 대체 툴 Grinder  (1) 2010.02.01
Ant 조건에 따라 실행하기  (0) 2009.07.29
라이브온에어  (0) 2009.04.07
Posted by 김용환 '김용환'