개미와 비교해 maven을 사용하면 얻을 수있는 주요 이점은 무엇입니까? 도움이되는 도구보다 성가신 것 같습니다. 일반 Eclipse Java EE (m2eclipse 없음) 및 Tomcat과 함께 maven 2를 사용합니다.
메이븐 지지자들은
-
Maven을 사용하면 패키지 종속성을 쉽게 얻을 수 있습니다
-
Maven은 표준 디렉토리 구조를 갖도록 강요합니다
내 경험에
-
패키지 의존성을 파악하는 것은 그리 어렵지 않습니다. 어쨌든 거의하지 않습니다. 프로젝트 설정 중 한 번, 업그레이드 중 더 많을 수 있습니다. maven을 사용하면 일치하지 않는 종속성, 잘못 작성된 폼을 수정하고 어쨌든 패키지 제외를 수행하게됩니다.
-
느린 FIX-COMPILE-DEPLOY-DEBUG 사이클로 생산성이 저하됩니다. 이것이 나의 주요 그립입니다. 변경하면 maven 빌드가 시작되고 배포 될 때까지 기다려야합니다. 핫 배포가 전혀 없습니다.
아니면 내가 잘못하고 있습니까? 올바른 방향으로 알려주세요. 저는 모두 귀입니다.
답변
패키지 의존성을 파악하는 것은 그리 어렵지 않습니다. 어쨌든 거의하지 않습니다. 프로젝트 설정 중 한 번, 업그레이드 중 더 많을 수 있습니다. 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을 사용하고 있으며 결코 뒤돌아 보지 않았습니다.
답변
Maven은 Ant와 같은 빌드 도구가 아닌 완벽한 프로젝트 개발 도구로 간주 될 수 있습니다. maven 플러그인과 함께 Eclipse IDE를 사용 하여 모든 문제를 해결해야합니다.
Maven 사용시 이점 페이지 에서 인용 한 Maven의 장점은 다음과 같습니다 .
헤닝
- 빠른 프로젝트 설정, 복잡한 build.xml 파일 없음, POM 만 가능
- 프로젝트의 모든 개발자는 중앙 집중식 POM으로 인해 동일한 jar 종속성을 사용합니다.
- “무료”프로젝트에 대한 여러 보고서 및 메트릭 가져 오기
- 병을 중앙 위치에서 잡아 당길 수 있기 때문에 소스 분포의 크기를 줄입니다.
엠마누엘 베니스
- 많은 목표를 사용할 수 있으므로 ANT와 달리 특정 빌드 프로세스 부분을 개발할 필요가 없습니다. antrun 플러그인을 사용하여 빌드 프로세스에서 기존 ANT 태스크를 재사용 할 수 있습니다
제시 맥코넬
- 모듈 식 코드 디자인을 촉진합니다. 여러 프로젝트를 간단하게 관리 할 수 있기 때문에 디자인을 여러 논리 파트로 배치 할 수 있으며 pom 파일에서 종속성 추적을 사용하여 이러한 파트를 함께 제직 할 수 있습니다.
- 모듈 식 코드 디자인을 시행합니다. lipservice를 모듈 코드로 지불하는 것은 쉽지만 코드가 별도의 컴파일 프로젝트에있을 때 종속성 관리에서 특별히 허용하지 않는 한 코드 모듈간에 수분 참조를 교차하는 것은 불가능합니다. 지금이 작업을 수행하고 나중에 구현을 수정하십시오.
- 종속성 관리가 명확하게 선언되었습니다. 의존성 관리 메커니즘을 사용하면 jar 버전 관리를 망치려고해야합니다 … ‘이 공급 업체 jar의 버전이 무엇입니까?’라는 고전적인 문제는 없습니다. 그리고 기존 프로젝트에서 설정하면 저장소에서 ‘알 수없는’버전을 만들어서 일을 시작하고 실행해야 할 때 기존 엉망에서 벗어납니다. ABC.jar의 실제 버전.
- 강력한 형식의 수명주기 소프트웨어 시스템이 빌드 시작부터 끝까지 진행되는 강력한 수명주기가 있습니다. 사용자는 자신의 수명주기를 통합하는 대신 시스템을 수명주기에 혼합하고 일치시킬 수 있습니다. 이것은 사람들이 한 프로젝트에서 다른 프로젝트로 이동하고 소프트웨어 구축 측면에서 동일한 어휘를 사용하여 말할 수있는 추가 이점을 제공합니다.
빈센트 매솔
- 더 큰 추진력 : 개미는 이제 레거시이며 빠르게 발전하지 않습니다. Maven은 빠르게 발전하고 있으며 Maven (CI, Dashboard 프로젝트, IDE 통합 등) 주위에 많은 가치가있는 도구를 보유 할 가능성이 있습니다.
답변
소규모 프로젝트에 대한 의존성을 파악하는 것은 어렵지 않습니다. 그러나 수백 개의 종속성이있는 종속성 트리를 다루기 시작하면 상황이 쉽게 벗어날 수 있습니다. (나는 여기서 경험에서 말하고 있습니다 …)
다른 점은 증분 컴파일 및 Maven 지원 (Eclipse + m2eclipse 등)이있는 IDE를 사용하는 경우 편집 / 컴파일 / 핫 배치 및 테스트를 설정할 수 있다는 것입니다.
나는 과거에 나쁜 경험 (이전 Maven)으로 인해이 개발 모드를 불신하게 되었기 때문에 개인적으로 이것을하지 않습니다. 아마도 누군가 이것이 실제로 Eclipse + m2eclipse에서 작동하는지에 대해 언급 할 수 있습니다.
답변
Maven은 실제로 좋아하는 것을 결정 하고 사용하고 싶은 도구 중 하나입니다. 왜냐하면 배우는 데 꽤 많은 시간을 할애하고 결정을 한 번만 내렸다면 모든 종류를 건너 뛸 수 있기 때문입니다. 배우는 동안 의심의 여지가 있습니다 (당신 이 그것을 좋아 하고 그것을 사용하기를 원 하기 때문에)!
강력한 규칙은 Maven 프로젝트에서 놀라운 일을 할 수있는 Hudson과 같은 여러 곳에서 도움이되지만 처음에는보기 어려울 수 있습니다.
편집 : 2016 년 현재 Maven은 세 가지 주요 IDE가 모두 소스를 즉시 사용할 수있는 유일한 Java 빌드 도구입니다. 즉, maven을 사용하면 빌드 IDE를 무시하게됩니다. 예를 들어 일식에서 정상적으로 작업하더라도 Netbeans 프로파일 링을 사용할 수 있습니다.
답변
개미에 대한 Maven의 장점은 꽤 많습니다. 여기에 요약하려고합니다.
컨벤션에 대한 컨벤션
메이븐은 프로젝트 레이아웃과 시작을 위해 독특한 접근 방식을 사용하므로 프로젝트를 쉽게 시작할 수 있습니다. 일반적으로 프로젝트의 아티팩트를 가져 오기 위해 checkount 및 maven 명령 만 필요합니다.
프로젝트 모듈화
프로젝트 규칙은 개발자가 프로젝트를 모듈화하도록 제안합니다. 단일 프로젝트 대신 종종 작은 하위 구성 요소로 프로젝트를 나눠야하므로 전체 프로젝트 구조를보다 쉽게 디버그하고 관리 할 수 있습니다.
종속성 관리 및 프로젝트 수명주기
전반적으로 SCM 구성이 좋고 내부 리포지토리를 사용하면 종속성 관리가 매우 쉬우 며 프로젝트 수명주기 (구성 요소 버전, 릴리스 관리 등)의 관점에서 다시 생각해야합니다. 개미보다 조금 더 복잡하지만 다시 프로젝트 품질이 향상됩니다.
maven에 어떤 문제가 있습니까?
메이븐은 쉽지 않습니다. POM 내에서 빌드주기 (수행 대상 및시기)가 명확하지 않습니다. 또한 구성 요소의 품질과 공용 리포지토리의 종속성 누락과 관련하여 일부 문제가 발생합니다.
가장 좋은 방법은 종속성을 캐싱 (및 유지)하기위한 내부 리포지토리를 보유하고 구성 요소의 릴리스 관리에 적용하는 것입니다. 책의 샘플 프로젝트보다 큰 프로젝트의 경우 전후에 maven에게 감사합니다.
답변
Maven은 표준 규칙과 방법을 사용하여 개발주기를 가속화하는 동시에 높은 성공률을 달성함으로써 빌드 프로세스에 이점을 제공 할 수 있습니다. Maven이 개발 프로세스에서 어떻게 도움을 줄 수 있는지에 대한 자세한 내용은 Maven 사용의 이점을 참조하십시오.
답변
Maven은 POM (프로젝트 객체 모델)을 기반으로하는 강력한 프로젝트 관리 도구입니다. 프로젝트 빌드, 종속성 및 문서화에 사용됩니다. ANT와 같은 빌드 프로세스를 단순화합니다. 그러나 그것은 ANT보다 너무 진보되어 있습니다. Maven은 빌드, 문서, 레포 링, SCM, 릴리스, 배포를 관리하는 데 도움이됩니다. -maven 저장소는 pom.xml 파일이있는 패키지화 된 JAR 파일의 디렉토리입니다. Maven은 리포지토리에서 종속성을 검색합니다.