1. Maven이란 무엇입니까?
Maven은 Java에서 개발 된 프로젝트 건설 도구입니다. 프로젝트 구성 프로세스 중에 컴파일, 테스트, 게시 및 문서를 자동화하여 프로그래머의 배포 부담을 크게 줄일 수 있습니다.
2. Maven을 설치하십시오
Maven을 설치하는 것은 매우 간단합니다. 공식 Maven 페이지를 방문하여 다운로드하십시오 : http://maven.apache.org/download.cgi
다운로드 후 M2_HOME 환경 변수를 구성한 다음 터미널에서 MVN (Version)을 실행하십시오. 올바른 출력 프롬프트가 표시되면 Maven이 설치됩니다.
3. Maven의 기본 개념
Maven의 핵심 아이디어는 POM, 즉 프로젝트 객체 모델입니다. POM 파일은 XML 파일 형식으로 Maven 프로젝트에서 사용하는 리소스 (소스 코드, 종속성, 테스트 등)를 설명합니다. 다음 그림은 POM 파일의 구조와 Maven이 POM 파일을 호출하는 방법에 대해 설명합니다.
Maven 명령이 실행되면 POM 파일이 전달되고 POM에 설명 된 리소스에서 Maven이 실행됩니다.
POM 파일 :
<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.0.xsd "> <modelversion> 4.0.0 </modelversion> </modelversion> <!-기본-> <groupid> ... </groupid> <artifactid> ... </artifactid> <bersion> ... </version> ... </packaging> ... <부모> ... </parent> <pectionencymanagement> ... </fectionencymanagement> </modules> ... </modules> <properties> ... </properties> <!-빌드 설정-> <빌드> ... </build> <보고> ... </reporting> <!-더 많은 프로젝트 정보-> <name> ... </description> ... <url> ... <inceptionyear> ... </inceptionyear> <ceences> ... </licenss> <grunization> ... </organization> ... </ongrouds> ... </developers> </developers> ... </contributors> <!-환경 설정-> <sueManagement> ... </issuemanagement> ... </cimanagement> ... </mailinglists> .../mailinglists> <전제 조건> ... </preRequisites> ... </repositories> </repositories> ... </repositories> <fluginRepositories> ... </pluginRepositories> <배포 관리> ... </distributionManagement> <profiles> ... </profiles> </project>
ModelVersion은 POM 모델 버전, 4.0.0은 Maven2 및 3을 지원합니다.
Maven 좌표 (Maven 좌표)
(1) GroupID : 조직 또는 프로젝트의 고유 한 ID입니다. 대부분의 경우 Com.pastqing과 같은 프로젝트의 Java 패키지의 루트 이름을 GroupId로 사용합니다.
(2) 인공물 : 예를 들어 지불 시스템 인공물은 웹 부표입니다. artifactid는 Maven 저장소의 GroupId 디렉토리의 하위 디렉토리 이름입니다.
(3) 버전 : 이름은 프로젝트 발급의 버전 번호를 의미합니다.
위의 세 항목은 빌드 결과의 이름의 일부입니다. 프로젝트가 구축되면 JAR 패키지가 생성됩니다. Maven 저장소에 위치한 경로는 Maven_repo/com/pastqing/web-pay/1.0/web-pay-1.0.jar입니다
4. Maven과 함께 제작 된 Hello World Java 프로젝트
Maven 플러그인 아키타 타입을 사용하여 프로젝트를 구축하십시오.
터미널에서 작업 디렉토리를 열고 명령을 실행하십시오.
MVN 아키 타입 : 생성
Maven Central Repository에서 관련 프로젝트 프로토 타입을 처음 다운로드해야하기 때문에 처음 실행되는 것은 느리게 진행됩니다. 다운로드 후 프로젝트 모델이 선택되고 GroupId, artifactid, 버전 등이 입력됩니다. 건설이 완료된 후 성공 프롬프트가 있습니다.
프로젝트 포장 : 프로젝트 루트 디렉토리로 전환하고 MVN 패키지를 실행하십시오. 패키지가 성공하면 프로젝트는 생성 된 JAR 파일 및 클래스 파일이있는 대상 폴더를 생성합니다.
JAR 파일을 실행하십시오.
Java -CP Target/HelloWorld-1.0-snapshot.jar com.pastqing.app
이 시점에서 Maven이 제작 한 가장 간단한 Java 프로젝트가 완료되었습니다.
5. Maven과 함께 제작 된 Java-Web 프로젝트
웹 프로젝트를 생성하는 것은 기본적으로 Java 프로젝트를 생성하는 것과 유사하지만 사용 된 모델은 다릅니다. 나는 여기서 그것을 설명하지 않을 것입니다. Tomcat 또는 Jetty 플러그인을 사용하여 웹 프로젝트를 실행하는 방법에 대해 이야기 해 봅시다. 여기서 우리는 Tomcat을 예로 봅니다.
Maven Tomcat 플러그인 설치 : http://tomcat.apache.org/maven-plugin-2.2/
웹 프로젝트의 POM 파일에 다음 플러그인 정보를 추가합니다.
<플러그인> <groupid> org.apache.tomcat.maven </groupid> <artifactid> tomcat6-maven-plugin </artifactid> </version> </plugin> <groupid> org.apache.tomcat.maven </groupid> <artifactid> tomcat7-maven-ppactin> <버전> 2.2 </version> </plugin>
이러한 방식으로 Tomcat의 Maven 플러그인을 통합하고 서비스를 배포하고 시작하려면 하나의 명령 만 있으면됩니다. 명령은 다음과 같습니다.
MVN Tomcat : 실행
(tomcat6)
MVN TOMCAT7 : 실행
(tomcat7)
Tomcat Maven 플러그인을 사용하여 외부 Tomcat에 자동 배포
위의 자동 배포는 Maven에 포함 된 Tomcat을 사용합니다. 다음으로 프로젝트를 외부 Tomcat에 배포 할 수 있도록 POM 파일을 수정합니다.
프로젝트 POM 파일 수정 및 서버 구성 정보 추가
<플러그인> <groupid> org.apache.tomcat.maven </groupid> <artifactid> tomcat7-maven-plugin </artifactid> <bersion> 2.2 </version> <url> http : // localhost : 8080/manager/text </url> <server> </serve> indame> <비밀번호> 관리자 </password> </configuration> </plugin>
서버, 사용자 이름 및 비밀번호 값은 setting.xml in %maven_home의 서버, 사용자 이름 및 비밀번호로 하나씩 해당합니다.
외부 Tomcat을 시작하고 명령 MVN Tomcat7 : Redeploy를 실행하십시오
6. Maven과 함께 다중 모듈 프로젝트를 구축하는 방법
1. 부모님 pom
모든 Maven POM 파일은 상위 POM에서 상속됩니다. 부모 POM이 지정되지 않으면 POM 파일은 루트 POM에서 상속됩니다. POM 파일의 통합 관계는 다음과 같습니다.
하나의 POM 파일을 다른 POM 파일을 명시 적으로 상속 할 수 있습니다. 이러한 방식으로, 모든 자식 POM 파일의 설정은 공개 부모 POM 파일의 설정을 수정하여 수정할 수 있습니다. 여기서는 부모 태그를 사용하여 부모 POM을 정의합니다. 멀티 모듈 Mavne 프로젝트를 구축합시다
2. 프로젝트 디렉토리 구조를 구축하십시오
우리는 EducationCloud라는 Maven-Web 프로젝트를 만듭니다. 다음으로 프로젝트 디렉토리에 여러 폴더를 만들어 모듈을 나눕니다. 그들은 교육 부모 (부모 모듈), 교육-코어 (비즈니스), 교육용 (ENTITITY), 교육 웹 (웹 서비스)입니다.
디렉토리 부서는 필요에 따라 나눌 수 있고, 내 부서는 위와 같습니다.
3. POM 파일을 수정하십시오
모듈 태그를 사용하여 모듈을 나눕니다. 루트 디렉토리에서 POM 파일을 열고 Moudle 태그를 추가하십시오.
<? xml version = "1.0"encoding = "utf-8"?> <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/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.educationCloud </group </grouptid> artifactid> Education> <버전> 1.0-snapshot </version> <packaging> pom </packaging> <modules> <module> Education-Parent </module> <module> Education-Core </module> <module> Education-Entity </module> <module> Education-web </module> </modles> <name> EducationCloud </name> </project>
여기서 우리는 포장 태그에 대해 이야기합니다. 가장 일반적인 것은 항아리, 전쟁으로 포장하는 것입니다. 모든 Maven 프로젝트는 POM 파일에서 패키지 요소를 정의해야합니다. 요소가 선언되지 않으면 기본적으로 항아리로 포장됩니다. 정의 값이 전쟁 인 경우 전쟁 패키지로 포장됩니다. 값이 POM 인 경우 패키지가 생성되지 않습니다 (일반적으로 부모 모듈에서 사용).
각 모듈에 부모 태그 추가 :
부모 태그는 부모 POM의 좌표 위치를 정의하는 데 사용되며 다음과 같이 정의됩니다.
<부모> <groupid> com.educationCloud </groupid> <artifactid> EducationCloud-Parent </artifactid> <bersion> 1.0-snapshot </version> <realiveativePath> </regativePath> </parent>
groupid, aritfactid, 버전은 부모 POM의 위치 정보를 나타내는 요소입니다. 상대 경로는 부모 POM의 위치를 나타내는 상대 경로입니다. 기본값은 ../pom.xml입니다. 여기서 groupid, aritfactid, 버전은 상위 POM 파일에 해당해야한다는 점에 유의해야합니다.
종속성 관리를 사용하여 프로젝트의 모든 종속성을 관리하십시오. 종속성을 균일하게 관리하기 위해 부모 프로젝트 모듈의 POM 파일에서 종속성 관리를 사용하여 프로젝트의 모든 종속성을 선언합니다. 이러한 방식으로 다른 하위 프로젝트의 종속성을 참조 할 때 버전 번호를 생략 할 수 있으며 수정하기 쉽습니다.
부모 프로젝트 모듈의 POM 파일을 작성 ** EducationCloud-Parent를 다음과 같이 추가하십시오.
PluginManagement를 사용하여 프로젝트의 Maven 플러그인을 관리하십시오. Maven Compilation Plugin, Packaging Plugin 등과 같은 프로젝트의 Maven 플러그인을 균일하게 관리하려면 구성 정보를 위해 PluginManagement를 추가하여 관리를 위해 PluginManagement를 추가하십시오. 이러한 방식으로 모든 서브 모듈에 참조 된 플러그인은 균일하게 처리되며 다음이 추가됩니다.
<PluginManagement> <flugins> <!-플러그인 구성을 부적절합니다-> <플러그인> <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-complier-plugin </artifactid> <bersion> 3.3 </version> <source> 1.7 </source> <target> 1. </tragge> utf-8 </configuration> <플러그인> </플러그인> </pluginmanagement>
위에는 JDK1.7로 컴파일 된 Maven 컴파일 플러그인 구성을 추가했습니다. 저장 후 각 서브 모드의 유효 POM에서 해당 수정을 볼 수 있습니다.
속성 태그를 사용하여 상수를 정의합니다.
각 종속성의 버전 번호를 다른 상수로 정의하여 향후 수정에 편리합니다.
<properties> <dkversion> 1.7 </jdkversion> <servletversion> 3.1.0 </servletversion> <mysqlversion> 5.1.34 </mysqlversion> <junitversion> 4.12 </junitversion> <defaultencoding> utf-8 </defaultEncoding> </properties>
인용 할 때 $ {jdkversion}의 형태를 사용하십시오.
위의 모든 작업은 IDE에서 작동 할 수 있으므로보다 편리하고 간단합니다.