[java] 이론과 실제에서 Maven은 무엇을합니까? 언제 사용할 가치가 있습니까? [닫은]

연습을 위해 Java 프로젝트를 시작하려고합니다. Maven에 대해 읽었지만 실제로 사용해야 할 시점을 이해하지 못합니다.

실용적인 팁을 줄 수 있습니까? 메이븐은 많은 도움을 줍니까? Maven은 실제로 내 프로젝트에서 무엇을합니까?



답변

그것이하는 일

메이븐은 당신의 방법을 정의입니다,는 “빌드 관리 도구”입니다 .java파일로 컴파일 얻을 .class로 포장 .jar(또는 .war.ear) 도구를 사용하여 처리 된 파일 (포스트 / 프리), 사용자 관리 CLASSPATH, 그리고에 필요한 모든 작업을 다른 사람의 종류 프로젝트를 빌드하십시오. Apache Ant , Gradle 또는 Makefile 과 유사합니다.C / C ++의 하지만 필요한 라이브러리 다운로드 및 설치와 같은 다른 일반적인 작업을 통합하여 추가 도구 나 스크립트가 필요하지 않도록 완전히 자체적으로 포함하려고 시도합니다.

또한 “빌드 이식성”테마를 중심으로 설계되었으므로 한 컴퓨터에서는 작동하지만 다른 컴퓨터에서는 작동하지 않는 동일한 빌드 스크립트를 사용하여 동일한 코드를 갖는 문제가 발생하지 않습니다 (이는 알려진 문제입니다. Windows의 VM이 있음) 델파이 응용 프로그램 중 일부를 다른 곳에서 컴파일 할 수 없기 때문에 98 대의 컴퓨터). 이 때문에 IDE 생성 Ant 스크립트는 다른 IDE로 가져 오기가 어렵 기 때문에 다른 IDE를 사용하는 사람들 사이에서 프로젝트를 수행하는 가장 좋은 방법이기도하지만 오늘날 모든 IDE는 Maven ( IntelliJ , EclipseNetBeans)을 이해하고 지원합니다. ). Maven을 좋아하지 않더라도 다른 모든 최신 빌드 도구의 참조 지점이됩니다.

왜 사용해야합니까

Maven에는 매우 좋은 세 가지가 있습니다 .

  1. Maven은 (당신이 사용하는 어떤 것들을 당신이 선언 후) 모두 사용하는 라이브러리를 다운로드합니다 그 라이브러리 자동으로 사용합니다. 이것은 매우 훌륭하며 많은 라이브러리를 엄청나게 쉽게 처리합니다. 이를 통해 “종속성 지옥” 을 피할 수 있습니다 . Apache Ant의 Ivy 와 유사합니다 .

  2. 컨벤션에 대한 컨벤션 “을 사용하므로 기본적으로 원하는 작업을 정의 할 필요가 없습니다. Ant 또는 Makefile에서해야하는 것처럼 “컴파일”, “테스트”, “패키지”또는 “정리”단계를 작성할 필요가 없습니다. Maven이 기대하는 곳에 파일을 넣으면 박쥐에서 벗어날 수 있습니다.

  3. Maven에는 JAXB사용하여 XSD 스키마에서 Java 클래스 생성에서 Cobertura로 테스트 범위 측정에 이르기 까지 많은 일상적인 작업을 처리 할 수있는 멋진 플러그인이 많이 있습니다 . 당신에게 그것들을 추가하면 pom.xml그들은 당신이하고 싶은 다른 모든 것과 통합됩니다.

초기 학습 곡선은 가파르지만 (거의) 모든 전문 Java 개발자는 Maven을 사용하거나 원합니다. 모든 프로젝트에 Maven을 사용해야하지만, 익숙해지기까지 시간이 걸리고 때로는 새로운 것을 배우는 것이 때때로 아프기 때문에 수동으로 일을 할 수 있기를 바랍니다. 그러나 Maven에 익숙해지면 빌드 관리에 거의 시간이 걸리지 않습니다.

시작하는 방법

시작하기 가장 좋은 곳은 ” 5 분 안에 Maven “입니다. 필요한 모든 파일과 폴더 설정으로 코드를 작성할 준비가 된 프로젝트로 시작할 수 있습니다 (예, 적어도 빠른 시작 아키타 입을 사용하는 것이 좋습니다).

시작한 후에는 도구의 사용법을보다 잘 이해하고 싶을 것입니다. ” Maven : Better Builds with Maven “은 그 작동 방식을 이해하기위한 가장 철저한 장소이지만 ” Maven : The Complete Reference “는 최신 버전입니다. 이해하기 위해 첫 번째를 읽은 다음 참조를 위해 두 번째를 사용하십시오.


답변

로부터 Sonatype의 문서 :

이 질문에 대한 답은 자신의 관점에 달려 있습니다. 대부분의 Maven 사용자는 Maven을 “빌드 도구”라고합니다. 소스 코드에서 배포 가능한 아티팩트를 빌드하는 데 사용되는 도구입니다. 빌드 엔지니어와 프로젝트 관리자는 Maven을보다 포괄적 인 프로젝트 관리 도구라고 할 수 있습니다. 차이점은 무엇입니까? Ant와 같은 빌드 도구는 전처리, 컴파일, 패키징, 테스트 및 배포에만 중점을 둡니다. Maven과 같은 프로젝트 관리 도구는 빌드 도구에있는 여러 기능을 제공합니다. Maven은 빌드 기능을 제공 할뿐만 아니라 보고서를 실행하고 웹 사이트를 생성하며 작업 팀원 간의 의사 소통을 촉진 할 수 있습니다.

Sonatype 문서를 살펴보고 Maven의 힘을 이해하기 위해 사용 가능한 플러그인을 보는 데 시간을 할애하는 것이 좋습니다.

간단히 말해서, Ant보다 (개요) 높은 개념 수준에서 작동합니다. Ant를 사용하여 빌드하려는 파일 및 자원 세트를 지정한 다음 함께 처리 할 방법을 지정하고 (clean / compile / jar)에서 발생하는 순서를 지정하십시오. Maven으로 이것은 모두 암시 적입니다. Maven은 특정 위치에서 파일을 찾을 것으로 예상하고 자동으로 작동합니다. 결과적으로 Maven으로 프로젝트를 설정하는 것이 훨씬 간단 할 수 있지만 Maven의 규칙을 따라야합니다!


답변

Maven빌드 도구입니다. 와 함께 AntGradle있는 Java건물의 도구를 제공합니다.
Java 초보자라면 IDE를 사용하여 빌드 Maven하면 가파른 학습 곡선이 있습니다.


답변