이 포럼에서 제기 된 몇 가지 불만 사항에 대응하고 싶습니다.
Maven은 전부 아니면 전무입니다. 또는 적어도 문서에서 알 수있는 한. maven을 개미의 드롭 인 대체품으로 쉽게 사용할 수 없으며 점차 고급 기능을 채택합니다.
이것은 사실이 아닙니다. Maven의 큰 승리는이를 사용하여 합리적인 방식으로 종속성을 관리하는 것입니다. Maven에서이를 수행하고 ant에서 다른 모든 작업을 수행하려면 가능합니다. 방법은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
이제 pom 파일에 정의 된 모든 Maven 종속성을 포함하는 'maven.classpath'라는 클래스 경로 개체가 있습니다. 필요한 것은 maven ant tasks jar를 ant의 lib 디렉토리에 넣는 것입니다.
Maven은 네트워크 연결에 따라 빌드 프로세스를 만듭니다.
기본 종속성 및 플러그인 가져 오기 프로세스는 네트워크 연결에 따라 다르지만 초기 빌드에만 해당됩니다 (또는 사용중인 종속성 또는 플러그인을 변경 한 경우). 그 후 모든 항아리가 로컬로 캐시됩니다. 네트워크 연결을 강제하려면 maven에 오프라인 모드를 사용하도록 지시 할 수 있습니다.
그것은 처음부터 당신에게 단단한 구조를 부과합니다.
이것이 파일 형식 또는 '컨벤션 대 구성'문제를 참조하는지 명확하지 않습니다. 후자의 경우 Java 소스 파일 및 리소스의 예상 위치 또는 소스의 호환성과 같은 보이지 않는 기본값 이 많이 있습니다. 그러나 이것은 강성이 아닙니다. 그것은 당신을 위해 합리적인 기본값을 제공하므로 명시 적으로 정의 할 필요가 없습니다. 모든 설정은 매우 쉽게 재정의 할 수 있습니다 (초보자는 문서에서 특정 사항을 변경하는 방법을 찾기가 어려울 수 있음).
파일 형식에 대해 이야기하고 있다면 다음 부분의 응답에서 다룹니다.
XML 기반이므로 ANT만큼 읽기가 어렵습니다.
우선, '개미보다 낫지 않다'는 것의 일부 측면이 나쁜 rep을 갖는 이유에 대해 어떻게 불평 할 수 있는지 모르겠습니다. 둘째, 여전히 XML이지만 XML의 형식은 훨씬 더 정의되어 있습니다. 더욱이, 그렇게 정의 되었기 때문에 POM을위한 합리적인 두꺼운 클라이언트 편집기를 만드는 것이 훨씬 쉽습니다. 나는 여기 저기 뛰어 다니는 페이지 긴 개미 빌드 스크립트를 보았습니다. 개미 빌드 스크립트 편집기는 더 이상 맛있게 만들지 않을 것이며 약간 다른 방식으로 제시된 상호 연결된 작업의 또 다른 긴 목록 일뿐입니다.
여기에서 제가 본 적이있는 몇 가지 불만이 있으며, 그 중 가장 큰 것은
- 문서가 불량 / 누락 됨
- 재현 가능한 빌드
- Eclipse 통합이 나쁘다
- 버그
내 대답은 두 가지입니다. 첫째, Maven은 Ant 또는 Make보다 훨씬 젊은 도구이므로 이러한 애플리케이션의 성숙도 수준에 도달하는 데 시간이 걸릴 것으로 예상해야합니다. 둘째, 마음에 들지 않으면 수정하십시오 . 그것은 오픈 소스 프로젝트이고 그것을 사용하고 누군가가 해결할 수있는 것에 대해 불평하는 것은 나에게 상당히 어리석은 것처럼 보입니다. 문서가 마음에 들지 않습니까? 초보자가 더 명확하고 완벽하거나 더 쉽게 접근 할 수 있도록 기여하세요.
재현 가능한 빌드 문제는 버전 범위와 자동 Maven 플러그인 업데이트의 두 가지 문제로 나뉩니다. 플러그인 업데이트의 경우 1 년 후 프로젝트를 다시 빌드 할 때 똑같은 JDK와 똑같은 Ant 버전을 사용하고 있는지 확인하지 않는 한 이것은 다른 이름을 가진 동일한 문제입니다. 버전 범위의 경우 모든 직접 및 전이 종속성에 대해 잠긴 버전으로 임시 pom을 생성하고 메이븐 릴리스 수명주기의 일부로 만드는 플러그인 작업을 권장합니다. 그러면 릴리스 빌드 형식이 항상 모든 종속성에 대한 정확한 설명이됩니다.