TagCloud

Friday, August 17, 2012

ivy+ant vs maven

ivy+ant vs maven 에 대한 자료를 수집할 예정입니다.

"프로젝트 진행에 있어서 의사선택의 절대적인 선택은 없다.
현재 프로젝트의 목적과 상황을 정확히 파악하고 무엇이 맞는 선택인지를 판단할 수 있어야 한다."


Apache Ivy 사이트에서는 아래와 같이 비교하고 있다.
나무와 사과의 비교 (Comparing plants and apples)
First, the most important difference is that they aren't at all the same kind of tools. Apache Maven is a software project management and comprehension tool, whereas Apache Ivy is only a dependency management tool, highly integrated with Apache Ant™, the popular build management tool. So maybe a more interesting comparison would compare Apache Ant+Ivy vs Apache Maven.
먼저 가장 중요한 차이점은 종류가 다른 툴이라는 점이다. Apache Maven 은 프로젝트의 관리 및 툴을 제공하는 소프트웨어입니다. 반면에 Apache Ivy 는 관리툴인 Apache Ant 에 밀접하게 통합되어 오직 의존성 관리 툴만을 제공합니다. 따라서 Apache Ant+Ivy 와 Apache Maven 을 비교하는것이 더 흥미로울것입니다.


Dependency 관리 측면에서 볼때 Maven 이 불필요한 라이브러리들다운로드 될 수 있는 반면(상황에 따라서 exclude 처리를 해야함) Apache Ivy 는 필요한 jar 만 선택하여 명시적으로 다운로드 받을 수 있음

라이브러리의 경합에 있어서 Apache Maven 은 단순하게 관리되나 Apache Ivy 는 사용자로 하여금 좀 더 상세하게 컨트롤할 수 있도록 지원한다

ivy 는 ant 로 인하여, 세밀한 작업에 있어서 유리함. maven 은 간단한 구조에 유리함.

Spring 3 은 ant + ivy 를 사용함
- 읽어볼거리 : Toby's Epril - about ant-ivy in Spring 3.0  : http://toby.epril.com/?p=557


엔터프라이즈 환경에서 Ant 는 여전히 주전플레이어임. 엔터프라이즈 프로젝트의 경우 오픈소스프로젝트와 달리 최신버젼으로의 변경이 많지 않기 때문에 의존성에 대한 빠른 변경이 불필요하고, 또 상황에 따라 어려울수도 있다. 그러므로 엔터프라이즈 환경에 있어서 Maven 이 가지는 장점은 Ant 와 비교했을때 많지 않을 수 있다.

반면 다음과 같은 이유로 인하여 Ant-Ivy 에서 Ant-Maven 으로 변경하는 경우도 있을 수 있다. ( https://issues.apache.org/jira/browse/CASSANDRA-2017 )

Replace ivy with maven-ant-tasks.
Three main reasons:
1. In order to deploy cassandra to maven central, we will need to use maven-ant-tasks anyway (as ivy does not generate correct poms)
2. In order to generate gpg signatures using ivy, we need to bootstrap a second ivy taskdef or use multiple <get> tasks to download bouncycastle. Maven-ant-tasks does not require this.
3. Allows consolidating the dependency information in one place. Rather than having duplication with the maven-ant-tasks for deploy to central




대부분의 글을을 보면 아래와 같이 요약된다.
Maven 모듈단위의 개발에 적합
Ant+Ivy 는 이러한 모듈들이 통합되어야 하는 배포서버나, 복잡한 구조의 프로젝트에 적합

마지막으로 힌트라 할 수 있는 문장.
Maven: The Complete Reference (Maven : 설정보다 관례)
그렇다면 관례보다 설정이 우선되어야 하는 프로젝트일 경우라면???
답은 프로젝트를 담당하고 있는 자의 몫이다...


참고자료
Apache Ivy : http://ant.apache.org/ivy/m2comparison.html
Apache Maven : http://maven.apache.org/
ivy vs maven 2 비교자료 : http://knight76.tistory.com/1010
Toby's Epril - about ant-ivy in Spring 3.0  : http://toby.epril.com/?p=557
사람을 위한 자동화: Ivy로 의존성 관리하기 : http://www.ibm.com/developerworks/kr/library/j-ap05068/index.html#listing1
Is Ant still the best choice for a Java build tool? : http://stackoverflow.com/questions/194125/is-ant-still-the-best-choice-for-a-java-build-tool
Maven vs. Ant + Ivy : http://blog.carlossanchez.eu/2005/04/02/maven-vs-ant-ivy/
Dependency Management Choices: Maven, Ant + Maven Antlib, Ivy : http://gregluck.com/blog/archives/2007/02/dependency-management-choices-maven-ant-maven-antlib-ivy/
Convention over Configuration(CoC)에 관하여  : http://blog.java2game.com/241
Cassandra CASSANDRA-2017 Replace ivy withmaven-ant-tasks : https://issues.apache.org/jira/browse/CASSANDRA-2017