패키지 의존성을 파악하는 것은 그리 어렵지 않습니다. 어쨌든 거의하지 않습니다. 프로젝트 설정 중 한 번, 업그레이드 중 더 많을 수 있습니다. maven을 사용하면 일치하지 않는 종속성, 잘못 작성된 폼을 수정하고 어쨌든 패키지 제외를 수행하게됩니다.
장난감 프로젝트에는 그렇게 어렵지 않습니다. 그러나 내가 작업하는 프로젝트에는 실제로 많은 프로젝트가 있으며 표준화 된 이름 지정 체계를 사용하여 전 이적으로 가져 와서 매우 기쁩니다. 수동으로이 모든 것을 수동으로 관리하는 것은 악몽 일 것입니다.
그리고 때로는 의존성의 수렴을 위해 노력해야합니다. 그러나 두 번 생각하십시오. 이것은 Maven 고유의 것이 아닙니다. 이것은 종속성을 사용하는 모든 시스템에 고유합니다 (일반적으로 Java 종속성에 대해 이야기하고 있습니다).
따라서 Ant를 사용하면 수동으로 모든 작업 을 수행해야 한다는 점을 제외하고 는 동일한 작업을 수행해야합니다. 일부 버전의 프로젝트 A 및 해당 종속성 가져 오기, 일부 버전의 프로젝트 B 및 해당 종속성 가져 오기, 사용하는 정확한 버전 확인, 확인 서로 겹치지 않으며 호환되지 않는지 확인하는 등 지옥에 온 것을 환영합니다.
반면, Maven은 종속성 관리를 지원하고이를 전 이적으로 검색 하여 종속성 관리 고유 의 복잡성을 관리하는 데 필요한 툴링을 제공 합니다. 종속성 트리를 분석하고 전이 종속성에 사용되는 버전을 제어하고 일부를 제외 할 수 있습니다 그들 경우 필요한 마법이 없다 등의 모듈에 걸쳐 수렴을 제어 할 수 있습니다. 그러나 적어도 당신은 지원을합니다.
그리고 의존성 관리가 Maven이 제공하는 것의 일부일 뿐이라는 점을 잊지 마십시오. 훨씬 더 많은 것이 있습니다 (예를 들어 Sonar 와 같이 Maven과 잘 통합되는 다른 도구는 말할 것도 없습니다 ).
느린 FIX-COMPILE-DEPLOY-DEBUG 사이클로 생산성이 저하됩니다. 이것이 나의 주요 그립입니다. 변경하면 maven 빌드가 시작되고 배포 될 때까지 기다려야합니다. 핫 배포가 전혀 없습니다.
첫째, 왜 이렇게 Maven을 사용합니까? 난 아니야 IDE를 사용하여 테스트를 작성하고 코드를 전달, 리팩터링, 배포, 핫 배포하고 커밋하기 전에 로컬 Maven 빌드를 실행하여 연속 빌드를 중단하지 않도록합니다.
둘째, Ant를 사용하면 상황이 훨씬 나아질 것입니다. 그리고 필자의 경험에 따르면 바이너리 의존성을 사용하는 모듈 식 Maven 빌드는 일반적인 모 놀리 식 Ant 빌드보다 빠른 빌드 시간을 제공합니다. 어쨌든 Maven Shell 을 살펴보고 Maven 환경을 즉시 사용할 수 있습니다 (매우 훌륭합니다).
결국, 유감스럽게도 유감입니다. 실제로 Maven이 생산성을 떨어 뜨리는 것은 아닙니다. 도구를 잘못 사용하고 있습니다. 그리고 당신이 그것에 만족하지 않는다면, 글쎄, 내가 말할 수있는 것은 그것을 사용하지 마십시오. 개인적으로 2003 년부터 Maven을 사용하고 있으며 결코 뒤돌아 보지 않았습니다.