어쩌면 나는 재능이 없었고, Maven을 처음 만났을 때, 나는 알려지지 않은 다양한 튜토리얼에 혼란 스러웠습니다. 나중에 사용하면 Maven의 대부분의 기능이 내가 상상했던 것만 큼 어렵지 않다는 것을 알았습니다.
이 기사는 Maven의 초보자를위한 것이며, Maven을 가능한 빨리 이해하고 일련의 혜택을 즐기기를 희망합니다.
[간단한 질문]
설명을하기 전에 간단한 질문을하십시오.
Eclipse에서 두 개의 Java 프로젝트를 개발하고 A 및 B라고 부르는 경우 프로젝트 A의 일부 기능은 프로젝트 B의 특정 클래스에 의존합니다.이 종속성을 유지하는 방법은 무엇입니까?
나는 Maven, Packaged Project B를 항아리로 사용하고 프로젝트 A 라이브러리에서 B의 JAR 파일을 가져 오기 전에이 작업을 수행했습니다.
이것은 명백한 단점이 있습니다.
1. 개발 과정에서 B의 버그가 발견되면 B 프로젝트 A에 대해 B를 다시 포장하고 재 컴파일해야합니다.
2. 프로젝트 개발에 대한 협력 할 때 프로젝트 A는 정상적으로 실행할 수 있도록 B를 A로 패키지하거나 B와 같은 B를 게시하도록 선택하고 개발자에게 사용 방법을 알려줍니다. 분명히, 두 방법 모두 좋지 않습니다. 전자는 자원 낭비를 유발할 수 있습니다 (예 : 개발자는 로컬로 저장된 B에 의존하는 다른 프로젝트를 개발하고있을 수 있음)는 프로젝트의 정상적인 운영에 위험을 초래할 것입니다 (작업이 수동 작업으로 넘겨지는 경우 특정 실패율을 가져올 예정입니다).
따라서 이러한 방식으로 프로젝트 간의 종속성을 수동으로 제어하는 것은 분명히 '나쁜'접근법입니다.
[Maven 소개]
저자의 의견에 따르면 Maven의 핵심 기능은 프로젝트 간의 종속성을 합리적으로 설명하는 것입니다.
모든 Maven 프로젝트에는 pom.xml이라는 파일이 포함되어 있으며 자체 <groupid> <artifactid> <bersion> 및 기타 필드를 기록합니다. 이 분야는 Maven 프로젝트를 만들 때 채워지고 Maven은 프로젝트를 기반으로 프로젝트를 찾습니다.
POM의 또 다른 키 태그는 <pectinements> (<pectopency> 태그를 포함 할 수있는 <pectinements>)이며 <pectinement> 아래에 고유 한 프로젝트 버전을 결정하는 <groupid> <artifactid> <bersion>과 같은 종속성 필드입니다.
일반적인 pom.xml [프로젝트 Luajava] :
<project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://maven.apache.org/pom/0.0.0.0 http://maven.apache.org/xsd/maven-4.0.xsd "> <modelversion> 4.0.0 </modelversion> <groupid> org.keplerproject </groupid> <artifactid> luajava </artifactid> <1 <1 <1 <1 <1 <1 <1 </same> </same> </same> <Url> http://maven.apache.org </url> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> </properties> <build> <grugins> <groupid> org.apache.maven.plugins> <Artifactid> Maven-Compiler-Plugin </artifactid> <bersion> 2.0.2 </version> <configuration> <source> 1.7 </source> <target> 1.7 </target> </configuration> </plugin> </plugins> </build> <peencies> <pecientency> <groupId> <artifactid> junit> Junit> <버전> 3.8.1 </버전> <Scope> 테스트 </scope> </fectionency> </project>
[Maven Library]
지금 예를 들어 A 및 B 프로젝트를 예로 들어 프로젝트 A의 POM 파일에 <pectionency>를 작성하면 Maven은 작업 공간에서 B 프로젝트를 찾아 종속성을 생성합니다. 현재 Project A는 프로젝트 B의 클래스 리소스에 직접 액세스 할 수 있으며 프로젝트 B에서 설정 한 중단 점은 여전히 A. 디버깅 중에도 적용됩니다.
Workspace Dependency Association 외에도 Maven은 프로젝트를 원격 이미지로 연결할 수도 있습니다. 기본적으로 작업 공간에 해당 프로젝트 레코드가없는 경우 Maven은 중앙 저장소에 연결하여 조회합니다. 발견되면 프로젝트를 로컬 라이브러리로 다운로드하고 (Windows의 로컬 라이브러리는 사용자 문서의 .M2 디렉토리에 있습니다) 협회를 자동으로 설정합니다. 이것은 매우 편리한 기능입니다. 추가 JAR 패키지 지원이 필요한 경우 더 이상 수동으로 다운로드하여 소개 할 필요가 없습니다. 프로젝트에 해당하는 종속성 필드 만 POM의 적절한 위치에 붙여 넣고 나머지는 Maven에 남겨두면 완료해야합니다.
[예]
그렇다면 필요한 프로젝트의 GroupId와 같은 분야를 어떻게 알 수 있습니까?
일반적으로 공식 프로젝트가 Maven을 지원하는 경우 일반적으로 복사를위한 페이지에 종속성 필드가 있지만 Maven이 지원되지만 종속 필드가 제공되지 않는 상황도 있습니다. 다른 프로젝트의 Maven 기능은 제 3자가 유지 관리하며 공식 채널에서 Maven을 지원하기가 어렵습니다.
따라서 종속성 필드 쿼리를위한 선호되는 솔루션은 Maven 검색 서비스를 사용하여 검색하는 것입니다.
여기서는 주소를 권장합니다 : mvnrepository.com
다음은 Eclipse를 사용하여 MySQLJDBC 드라이버를 연결하는 예입니다. 그 전에는 도움말-> Aboutlipse에서 Maven을 지원하는지 확인하십시오.
공식 새 버전의 Eclipse에서 Maven에 대한 지원은 이미 내장되어 있습니다. 버전이 오래된 경우 Maven 플러그인을 설치할 수 있습니다.
먼저 새로운 Maven 프로젝트, new-> project-> mavenproject-> CreateAsimpleProject (skipcharchetypeselection)를 만들어 봅시다.
다음은 가장 중요한 단계입니다. 이 프로젝트의 GroupId와 같은 종속성 필드를 작성하십시오. 여기에 채워진 필드는 다른 프로젝트에 의존 할 때 사용됩니다. 채워지지 않은 부품은 선택 사항입니다.
그 후, 우리는 mvnrepository.com에서 "MySQL JDBC"를 검색했습니다
곧 결과를 발견하고 자세한 버전 정보를 보려면 클릭했습니다.
다음은 여러 버전 목록과 MySQL JDBC의 사용량입니다. 여기서 우리는 두 번째 새 버전 5.1.34를 선택합니다.
Maven 상자에 내용을 복사하여 POM의 <pectinements>에 작성하십시오.
<project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://maven.apache.org/pom/0.0.0.0 http://maven.apache.org/xsd/maven-4.0.xsd "> <modelversion> 4.0.0 </modelversion> <groupid> com.test </groupid> <artifactid> maventest </artifactid> <1-snapshot> <prontid> mysql> mysql> <아티 팩트> mysql-connector-java </artifactid> <bersion> 5.1.34 </version> </fectionency> </fectencies> </project>
진행 상황 읽기 바가 끝나면 프로젝트에 더 많은 Maven 의존성이 있음을 알 수 있으며 방금 소개 한 JDBC 드라이버 패키지를 찾을 수 있습니다.
[기타 기능]
1. 거울 소스
Maven Central Warehouse는 상대적으로 큰 부하가 있고 중국에 있지 않기 때문에 속도가 매우 느리고 때로는 종속성을 찾을 수 없습니다. 따라서 특히 소규모 팀 개발에서 Maven 개인 서버를 구축하면 효율성이 크게 향상됩니다. 다음은 Maven 이미지 빌딩 도구입니다. Nexus : http://www.sonatype.org/nexus/
이를 사용하여 개인 Maven 이미지 소스를 빠르고 쉽게 빌드 한 다음 Maven Settings.xml로 구성하십시오.
2. SRC 소스 코드의 게으른 다운로드
때때로 프로젝트에 의존하는 소스 파일을 참조해야합니다. 이 시점에서 클래스 파일을 직접 두 번 클릭 할 수 있습니다. Maven 이미지 소스에 소스 파일이 있으면 위치 영역으로 자동 다운로드되며 Eclipse가 자동으로로드 및 표시됩니다.
3. 매개 변수 구성을 컴파일합니다
저자는 Eclipseluna 버전을 사용합니다. Maven의 기본 Java 컴파일 버전은 1.5입니다. POM에서 컴파일 버전을 지정하여 1.7로 개선 할 수 있습니다 (Luajavapom의 빌드 태그 참조). 또한 이러한 설정은 Jenkins Continuous Integration과 같은 자동화 도구로 읽고 올바르게 구성됩니다.
요약
위의 것은 Maven을 빠르게 이해하는 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!