Maven-퀵 가이드

Maven은 무엇입니까?

Maven은 개발자에게 완전한 빌드 수명주기 프레임 워크를 제공하는 프로젝트 관리 및 이해 도구입니다. Maven은 표준 디렉터리 레이아웃과 기본 빌드 수명주기를 사용하므로 개발 팀은 거의 즉시 프로젝트의 빌드 인프라를 자동화 할 수 있습니다.

여러 개발 팀 환경의 경우 Maven은 매우 짧은 시간에 표준에 따라 작업하는 방법을 설정할 수 있습니다. 대부분의 프로젝트 설정이 간단하고 재사용 가능하기 때문에 Maven은 보고서를 작성하고, 확인하고, 자동화 설정을 빌드하고 테스트하는 동안 개발자의 삶을 쉽게 만듭니다.

Maven은 개발자에게 다음을 관리하는 방법을 제공합니다.

  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
  • 메일 링리스트

요약하면 Maven은 프로젝트 빌드 프로세스를 단순화하고 표준화합니다. 컴파일, 배포, 문서화, 팀 협업 및 기타 작업을 원활하게 처리합니다. Maven은 재사용 성을 높이고 대부분의 빌드 관련 작업을 처리합니다.

메이븐 에볼루션

Maven은 원래 Jakarta Turbine 프로젝트에서 건물 프로세스를 단순화하도록 설계되었습니다. 여러 프로젝트가 있었고 각 프로젝트에는 약간 다른 ANT 빌드 파일이 포함되어 있습니다. JAR이 CVS에 체크인되었습니다.

Apache 그룹이 개발되었습니다. Maven 여러 프로젝트를 함께 빌드하고, 프로젝트 정보를 게시하고, 프로젝트를 배포하고, 여러 프로젝트에서 JAR을 공유하고, 팀 공동 작업을 지원할 수 있습니다.

객관적인

Maven의 주요 목표는 개발자에게 다음을 제공하는 것입니다.

  • 재사용 가능하고 유지 보수 가능하며 이해하기 쉬운 프로젝트를위한 포괄적 인 모델입니다.

  • 이 선언적 모델과 상호 작용하는 플러그인 또는 도구입니다.

Maven 프로젝트 구조와 내용은 전체 Maven 시스템의 기본 단위 인 POM (Project Object Model)이라고하는 pom.xml이라는 xml 파일에 선언되어 있습니다. 이후 장에서 POM에 대해 자세히 설명합니다.

구성보다 관례

Maven 사용 Convention 위에 Configuration이는 개발자가 직접 빌드 프로세스를 만들 필요가 없음을 의미합니다.

개발자는 각각의 모든 구성 세부 사항을 언급 할 필요가 없습니다. Maven은 프로젝트에 대해 합리적인 기본 동작을 제공합니다. Maven 프로젝트가 생성되면 Maven은 기본 프로젝트 구조를 생성합니다. 개발자는 그에 따라 파일을 배치하기 만하면되며 pom.xml에 구성을 정의 할 필요가 없습니다.

예를 들어 다음 표는 프로젝트 소스 코드 파일, 리소스 파일 및 기타 구성의 기본값을 보여줍니다. 가정,${basedir} 프로젝트 위치를 나타냅니다-

안건 기본
소스 코드 $ {basedir} / src / main / java
자원 $ {basedir} / src / main / resources
테스트 $ {basedir} / src / test
준수 된 바이트 코드 $ {basedir} / 대상
배포 가능한 JAR $ {basedir} / target / classes

프로젝트를 빌드하기 위해 Maven은 개발자에게 수명주기 목표 및 프로젝트 종속성 (Maven 플러그인 기능 및 기본 규칙에 의존)을 언급하는 옵션을 제공합니다. 대부분의 프로젝트 관리 및 빌드 관련 작업은 Maven 플러그인에 의해 유지됩니다.

개발자는 개별 플러그인의 작동 방식을 이해할 필요없이 주어진 Maven 프로젝트를 빌드 할 수 있습니다. 이후 장에서 Maven 플러그인에 대해 자세히 설명합니다.

Maven의 특징

  • 모범 사례를 따르는 간단한 프로젝트 설정.

  • 모든 프로젝트에서 일관된 사용.

  • 자동 업데이트를 포함한 종속성 관리.

  • 크고 성장하는 라이브러리 저장소.

  • Java 또는 스크립팅 언어로 플러그인을 쉽게 작성할 수있는 기능으로 확장 가능합니다.

  • 추가 구성이 거의 또는 전혀없이 새로운 기능에 즉시 액세스 할 수 있습니다.

  • Model-based builds − Maven은 jar, war, 메타 데이터와 같은 사전 정의 된 출력 유형으로 원하는 수의 프로젝트를 빌드 할 수 있습니다.

  • Coherent site of project information − 빌드 프로세스에 따라 동일한 메타 데이터를 사용하여 maven은 완전한 문서가 포함 된 웹 사이트와 PDF를 생성 할 수 있습니다.

  • Release management and distribution publication − 추가 구성없이, maven은 CVS와 같은 소스 제어 시스템과 통합되고 프로젝트 릴리스를 관리합니다.

  • Backward Compatibility− 이전 버전의 Maven에서 Maven 3으로 프로젝트의 여러 모듈을 쉽게 이식 할 수 있습니다. 이전 버전도 지원할 수 있습니다.

  • Automatic parent versioning − 유지 보수를 위해 하위 모듈에서 상위 모듈을 지정할 필요가 없습니다.

  • Parallel builds− 프로젝트 의존성 그래프를 분석하여 일정 모듈을 병렬로 구축 할 수 있습니다. 이를 사용하면 20-50 %의 성능 향상을 달성 할 수 있습니다.

  • Better Error and Integrity Reporting − Maven은 오류보고를 개선했으며 오류에 대한 전체 설명을 얻을 수있는 Maven 위키 페이지에 대한 링크를 제공합니다.

Maven은 Java 기반 도구이므로 첫 번째 요구 사항은 컴퓨터에 JDK를 설치하는 것입니다.

시스템 요구 사항

JDK 1.7 이상.
기억 최소 요구 사항이 없습니다.
디스크 공간 최소 요구 사항이 없습니다.
운영 체제 최소 요구 사항이 없습니다.

1 단계-컴퓨터에서 Java 설치 확인

콘솔을 열고 다음을 실행하십시오. java 명령.

OS 직무 명령
윈도우 명령 콘솔 열기 c : \> 자바 버전
리눅스 명령 터미널 열기 $ 자바 버전
터미널 열기 기계 : ~ joseph $ java -version

모든 운영 체제의 출력을 확인하겠습니다.

OS 산출
윈도우

Java 버전 "1.7.0_60"

Java (TM) SE 런타임 환경 (빌드 1.7.0_60-b19)

Java HotSpot (TM) 64 비트 서버 VM (빌드 24.60-b09, 혼합 모드)

리눅스

Java 버전 "1.7.0_60"

Java (TM) SE 런타임 환경 (빌드 1.7.0_60-b19)

Java HotSpot (TM) 64 비트 서버 VM (빌드 24.60-b09, 혼합 모드)

Java 버전 "1.7.0_60"

Java (TM) SE 런타임 환경 (빌드 1.7.0_60-b19)

Java HotSpot (TM) 64 비트 서버 VM (빌드 24.60-b09, 혼합 모드)

Java가 설치되어 있지 않은 경우 다음에서 Java SDK (Software Development Kit)를 설치하십시오. https://www.oracle.com/technetwork/java/javase/downloads/index.html. 이 자습서에서는 Java 1.7.0.60을 설치된 버전으로 가정합니다.

2 단계-JAVA 환경 설정

설정 JAVA_HOME시스템에 Java가 설치된 기본 디렉토리 위치를 가리키는 환경 변수. 예를 들면-

OS 산출
윈도우 환경 변수 JAVA_HOME을 C : \ Program Files \ Java \ jdk1.7.0_60으로 설정합니다.
리눅스 내보내기 JAVA_HOME = / usr / local / java-current
export JAVA_HOME = / Library / Java / Home

시스템 경로에 Java 컴파일러 위치를 추가합니다.

OS 산출
윈도우 시스템 변수 Path 끝에“; C : \ Program Files \ Java \ jdk1.7.0.60 \ bin”문자열을 추가합니다.
리눅스 내보내기 PATH =$PATH:$JAVA_HOME / bin /
필요하지 않음

다음을 사용하여 Java 설치 확인 java -version 위에서 설명한대로 명령.

3 단계-Maven 아카이브 다운로드

Maven 2.2.1 다운로드 https://maven.apache.org/download.cgi.

OS 아카이브 이름
윈도우 apache-maven-3.3.1-bin.zip
리눅스 apache-maven-3.3.1-bin.tar.gz
apache-maven-3.3.1-bin.tar.gz

4 단계-Maven 아카이브 추출

Maven 3.3.1을 설치하려는 디렉토리에 아카이브를 추출하십시오. 아카이브에서 하위 디렉토리 apache-maven-3.3.1이 생성됩니다.

OS 위치 (설치에 따라 다를 수 있음)
윈도우 C : \ Program Files \ Apache Software Foundation \ apache-maven-3.3.1
리눅스 / usr / local / apache-maven
/ usr / local / apache-maven

5 단계-Maven 환경 변수 설정

환경 변수에 M2_HOME, M2, MAVEN_OPTS를 추가합니다.

OS 산출
윈도우

시스템 속성을 사용하여 환경 변수를 설정합니다.

M2_HOME = C : \ Program Files \ Apache Software Foundation \ apache-maven-3.3.1 M2 = % M2_HOME % \ bin MAVEN_OPTS = -Xms256m -Xmx512m

리눅스

명령 터미널을 열고 환경 변수를 설정합니다.

export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1 export M2 = $ M2_HOME / bin

내보내기 MAVEN_OPTS = -Xms256m -Xmx512m

명령 터미널을 열고 환경 변수를 설정합니다.

export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1

내보내기 M2 = $ M2_HOME / bin

내보내기 MAVEN_OPTS = -Xms256m -Xmx512m

6 단계-시스템 경로에 Maven bin 디렉토리 위치 추가

이제 M2 변수를 시스템 경로에 추가하십시오.

OS 산출
윈도우 시스템 변수 Path의 끝에 문자열; % M2 %를 추가합니다.
리눅스 내보내기 PATH =$M2:$통로
내보내기 PATH =$M2:$통로

7 단계-Maven 설치 확인

이제 콘솔을 열고 다음을 실행하십시오. mvn 명령.

OS 직무 명령
윈도우 명령 콘솔 열기 c : \> mvn-버전
리눅스 명령 터미널 열기 $ mvn-버전
터미널 열기 기계 : ~ joseph $ mvn --version

마지막으로, 다음과 같은 위 명령의 출력을 확인합니다.

OS 산출
윈도우

Apache Maven 3.3.1 (r801777; 2009-08-07 00 : 46 : 01 + 0530)

자바 버전 : 1.7.0_60

자바 홈 : C : \ Program Files \ Java \ jdk1.7.0_60 \ jre

리눅스

Apache Maven 3.3.1 (r801777; 2009-08-07 00 : 46 : 01 + 0530)

자바 버전 : 1.7.0_60

자바 홈 : C : \ Program Files \ Java \ jdk1.7.0_60 \ jre

Apache Maven 3.3.1 (r801777; 2009-08-07 00 : 46 : 01 + 0530)

자바 버전 : 1.7.0_60

자바 홈 : C : \ Program Files \ Java \ jdk1.7.0_60 \ jre

POM은 Project Object Model을 나타냅니다. Maven의 기본 작업 단위입니다. 프로젝트의 기본 디렉토리에 pom.xml로 상주하는 XML 파일입니다.

POM에는 프로젝트에 대한 정보와 Maven에서 프로젝트를 빌드하는 데 사용하는 다양한 구성 세부 정보가 포함되어 있습니다.

POM에는 목표와 플러그인도 포함되어 있습니다. 작업 또는 목표를 실행하는 동안 Maven은 현재 디렉터리에서 POM을 찾습니다. POM을 읽고 필요한 구성 정보를 얻은 다음 목표를 실행합니다. POM에서 지정할 수있는 일부 구성은 다음과 같습니다.

  • 프로젝트 종속성
  • plugins
  • goals
  • 빌드 프로필
  • 프로젝트 버전
  • developers
  • 메일 링리스트

POM을 만들기 전에 먼저 프로젝트를 결정해야합니다. group (groupId), 그 name (artifactId) 및 해당 버전은 저장소에서 프로젝트를 고유하게 식별하는 데 도움이됩니다.

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/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
</project>

각 프로젝트에 대해 하나의 POM 파일이 있어야합니다.

  • 모든 POM 파일에는 project 요소 및 세 개의 필수 필드 : groupId, artifactId, version.

  • 저장소의 프로젝트 표기법은 groupId:artifactId:version.

  • POM에 대한 최소 요구 사항 −

Sr. 아니. 노드 및 설명
1

Project root

이것은 프로젝트 루트 태그입니다. apache 스키마 및 w3.org 사양과 같은 기본 스키마 설정을 지정해야합니다.

2

Model version

모델 버전은 4.0.0이어야합니다.

groupId

프로젝트 그룹의 ID입니다. 이것은 일반적으로 조직이나 프로젝트에서 고유합니다. 예를 들어, 은행 그룹 com.company.bank에는 모든 은행 관련 프로젝트가 있습니다.

4

artifactId

프로젝트의 ID입니다. 이것은 일반적으로 프로젝트의 이름입니다. 예를 들어, 소비자 금융. groupId와 함께 artifactId는 저장소 내에서 아티팩트의 위치를 ​​정의합니다.

5

version

이것은 프로젝트의 버전입니다. groupId와 함께 아티팩트의 저장소 내에서 버전을 서로 구분하는 데 사용됩니다. 예를 들면-

com.company.bank:consumer-banking:1.0

com.company.bank:consumer-banking:1.1.

슈퍼 POM

Super POM은 Maven의 기본 POM입니다. 모든 POM은 상위 또는 기본값 (명시 적으로 정의되었는지 여부에 관계없이)에서 상속됩니다. 이 기본 POM은Super POM이며 기본적으로 상속 된 값을 포함합니다.

Maven은 관련 목표를 실행하기 위해 효과적인 POM (수퍼 pom의 구성과 프로젝트 구성)을 사용합니다. 개발자가 pom.xml에 최소 구성 세부 정보를 지정하는 데 도움이됩니다. 구성을 쉽게 재정의 할 수 있지만.

super POM의 기본 구성을 쉽게 볼 수있는 방법은 다음 명령을 실행하는 것입니다. mvn help:effective-pom

컴퓨터의 임의의 디렉토리에 pom.xml을 만들고 위에서 언급 한 예제 pom의 내용을 사용합니다.

아래 예에서는 C : \ MVN \ project 폴더에 pom.xml을 생성했습니다.

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn help:effective-pom

Maven은 처리를 시작하고 효과적인 pom을 표시합니다.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO]    task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]

.....

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------

상속, 보간 및 프로필이 적용된 후 콘솔에 결과로 표시되는 유효 POM입니다.

<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2015-04-09T11:41:51 -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ -->
<!-- -->
<!-- ==============================================-->

<!-- ==============================================-->
<!-- -->
<!-- Effective POM for project -->
<!-- 'com.companyname.project-group:project-name:jar:1.0' -->
<!-- -->
<!-- ============================================== -->

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
      <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>

      <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
      <outputDirectory>C:\MVN\project\target\classes</outputDirectory>
      <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
      <resources>
         <resource>
            <mergeId>resource-0</mergeId>
            <directory>C:\MVN\project\src\main\resources</directory>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <mergeId>resource-1</mergeId>
            <directory>C:\MVN\project\src\test\resources</directory>
         </testResource>
      </testResources>
      <directory>C:\MVN\project\target</directory>
      <finalName>project-1.0</finalName>
   
      <pluginManagement>
         <plugins>
            <plugin>
               <artifactId>maven-antrun-plugin</artifactId>
               <version>1.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-assembly-plugin<  /artifactId>
               <version>2.2-beta-2</version>
            </plugin>
            <plugin>
               <artifactId>maven-clean-plugin<  /artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.0.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-dependency-plugin</artifactId>     
               <version>2.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.4</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-ear-plugin</artifactId>
               <version>2.3.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-ejb-plugin</artifactId>
               <version>2.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>2.5</version>
            </plugin>
            <plugin>
               <artifactId>maven-plugin-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-rar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-release-plugin</artifactId>
               <version>2.0-beta-8</version>
            </plugin>
            <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <version>2.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-site-plugin</artifactId>
               <version>2.0-beta-7</version>
            </plugin>
            <plugin>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.0.4</version>
            </plugin>
            <plugin>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.1-alpha-2</version>
            </plugin>
         </plugins>
      </pluginManagement>
   
      <plugins>
         <plugin>
            <artifactId>maven-help-plugin</artifactId>
            <version>2.1.1</version>
         </plugin>
      </plugins>
   </build>
   
   <repositories>
      <repository>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Repository Switchboard</name>
         <url>http://repo1.maven.org/maven2</url>
      </repository>
   </repositories>
   <pluginRepositories>
      <pluginRepository>
         <releases>
            <updatePolicy>never</updatePolicy>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Plugin Repository</name>
         <url>http://repo1.maven.org/maven2</url>
      </pluginRepository>
   </pluginRepositories>
   <reporting>
      <outputDirectory>C:\MVN\project\target/site</outputDirectory>
   </reporting>
</project>

위의 pom.xml에서 Maven이 원하는 목표를 실행하는 동안 사용할 기본 프로젝트 소스 폴더 구조, 출력 디렉터리, 필요한 플러그인, 저장소,보고 디렉터리를 볼 수 있습니다.

Maven pom.xml도 수동으로 작성할 필요가 없습니다. Maven은 프로젝트를 생성하기위한 수많은 아키 타입 플러그인을 제공하며, 순서대로 프로젝트 구조와 pom.xml을 생성합니다.

빌드 라이프 사이클이란 무엇입니까?

빌드 라이프 사이클은 목표가 실행되는 순서를 정의하는 잘 정의 된 일련의 단계입니다. 여기서 단계는 라이프 사이클의 한 단계를 나타냅니다. 예를 들어, 전형적인Maven Build Lifecycle 다음 단계의 순서로 구성됩니다.

단계 핸들 기술
자원 준비 리소스 복사 이 단계에서 리소스 복사를 사용자 지정할 수 있습니다.
확인 정보 검증 프로젝트가 정확하고 필요한 모든 정보를 사용할 수 있는지 확인합니다.
엮다 편집 소스 코드 컴파일은이 단계에서 수행됩니다.
테스트 테스팅 프레임 워크 테스트에 적합한 컴파일 된 소스 코드를 테스트합니다.
꾸러미 포장 이 단계에서는 POM.xml의 패키징에 언급 된대로 JAR / WAR 패키지를 만듭니다.
설치 설치 이 단계는 패키지를 로컬 / 원격 Maven 저장소에 설치합니다.
배포 배포 최종 패키지를 원격 저장소에 복사합니다.

항상 있습니다 prepost 등록 단계 goals, 특정 단계 이전 또는 이후에 실행해야합니다.

Maven이 프로젝트 빌드를 시작하면 정의 된 단계 시퀀스를 단계별로 진행하고 각 단계에 등록 된 목표를 실행합니다.

Maven에는 다음과 같은 세 가지 표준 수명주기가 있습니다.

  • clean
  • 기본값 (또는 빌드)
  • site

goal프로젝트의 구축 및 관리에 기여하는 특정 작업을 나타냅니다. 0 개 이상의 빌드 단계에 바인딩 될 수 있습니다. 빌드 단계에 바운드되지 않은 목표는 직접 호출을 통해 빌드 수명주기 외부에서 실행할 수 있습니다.

실행 순서는 목표 및 빌드 단계가 호출되는 순서에 따라 다릅니다. 예를 들어, 아래 명령을 고려하십시오. 그만큼cleanpackage 인수는 빌드 단계이며 dependency:copy-dependencies 목표입니다.

mvn clean dependency:copy-dependencies package

여기서 클린 단계가 먼저 실행되고dependency:copy-dependencies goal, 마지막으로 패키지 단계가 실행됩니다.

깨끗한 라이프 사이클

우리가 실행하면 MVN 후 깨끗한 명령을, Maven은 다음과 같은 단계로 구성된 청소주기를 호출합니다.

  • pre-clean
  • clean
  • post-clean

Maven 정리 목표 (clean : clean)는 정리 수명주기 의 정리 단계에 바인딩됩니다 . 이것의clean:cleangoal빌드 디렉토리를 삭제하여 빌드의 출력을 삭제합니다. 따라서 mvn clean 명령이 실행되면 Maven은 빌드 디렉토리를 삭제합니다.

위의 클린 라이프 사이클 단계에서 목표를 언급하여이 동작을 사용자 지정할 수 있습니다.

다음 예제에서는 maven-antrun-plugin : run 목표를 정리 전, 정리 및 정리 후 단계에 연결합니다. 이를 통해 클린 라이프 사이클의 단계를 표시하는 텍스트 메시지를 에코 할 수 있습니다.

C : \ MVN \ project 폴더에 pom.xml을 만들었습니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.pre-clean</id>
                  <phase>pre-clean</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>pre-clean phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.clean</id>
                  <phase>clean</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>clean phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.post-clean</id>
                  <phase>post-clean</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>post-clean phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn post-clean

Maven은 클린 라이프 사이클의 모든 단계를 처리하고 표시하기 시작합니다.

[INFO] Scanning for projects...
[INFO] -----------------------------------------------------------------
-
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [post-clean]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-clean}]
[INFO] Executing tasks
[echo] pre-clean phase
[INFO] Executed tasks
[INFO] [clean:clean {execution: default-clean}]
[INFO] [antrun:run {execution: id.clean}]
[INFO] Executing tasks
[echo] clean phase
[INFO] Executed tasks
[INFO] [antrun:run {execution: id.post-clean}]
[INFO] Executing tasks
[echo] post-clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: > 1 second
[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
[INFO] Final Memory: 4M/44M
[INFO] ------------------------------------------------------------------

튜닝을 시도 할 수 있습니다. mvn clean 명령, 표시됩니다 pre-clean그리고 깨끗합니다. 아무것도 실행되지 않습니다.post-clean 단계.

기본 (또는 빌드) 수명주기

이것은 Maven의 기본 라이프 사이클이며 애플리케이션을 빌드하는 데 사용됩니다. 다음과 같은 21 단계가 있습니다.

Sr. 아니. 수명주기 단계 및 설명
1

validate

프로젝트가 올 바르고 빌드 프로세스를 완료하는 데 필요한 모든 정보를 사용할 수 있는지 확인합니다.

2

initialize

빌드 상태를 초기화합니다 (예 : 속성 설정).

generate-sources

컴파일 단계에 포함 할 소스 코드를 생성합니다.

4

process-sources

예를 들어 모든 값을 필터링하는 등 소스 코드를 처리합니다.

5

generate-resources

패키지에 포함 할 리소스를 생성합니다.

6

process-resources

패키징 단계를 위해 준비된 대상 디렉터리로 리소스를 복사하고 처리합니다.

7

compile

프로젝트의 소스 코드를 컴파일하십시오.

8

process-classes

예를 들어 Java 클래스에서 바이트 코드 향상 / 최적화를 수행하기 위해 컴파일에서 생성 된 파일을 사후 처리합니다.

9

generate-test-sources

컴파일 단계에 포함될 테스트 소스 코드를 생성합니다.

10

process-test-sources

예를 들어 모든 값을 필터링하는 등 테스트 소스 코드를 처리합니다.

11

test-compile

테스트 소스 코드를 테스트 대상 디렉터리로 컴파일합니다.

12

process-test-classes

테스트 코드 파일 컴파일에서 생성 된 파일을 처리합니다.

13

test

적절한 단위 테스트 프레임 워크를 사용하여 테스트를 실행합니다 (Junit은 하나입니다).

14

prepare-package

실제 포장하기 전에 포장 준비에 필요한 모든 작업을 수행하십시오.

15

package

컴파일 된 코드를 가져와 JAR, WAR 또는 EAR 파일과 같은 배포 가능한 형식으로 패키징하십시오.

16

pre-integration-test

통합 테스트를 실행하기 전에 필요한 조치를 수행하십시오. 예를 들어 필요한 환경을 설정합니다.

17

integration-test

통합 테스트를 실행할 수있는 환경에서 필요한 경우 패키지를 처리하고 배포합니다.

18

post-integration-test

통합 테스트가 실행 된 후 필요한 작업을 수행합니다. 예를 들어, 환경 청소.

19

verify

검사를 실행하여 패키지가 유효하고 품질 기준을 충족하는지 확인합니다.

20

install

다른 프로젝트에서 로컬로 종속성으로 사용할 수있는 로컬 저장소에 패키지를 설치합니다.

21

deploy

다른 개발자 및 프로젝트와 공유 할 수 있도록 최종 패키지를 원격 저장소에 복사합니다.

언급 할 가치가있는 Maven Lifecycles와 관련된 몇 가지 중요한 개념이 있습니다.

  • 예를 들어 Maven 명령을 통해 단계가 호출되는 경우 mvn compile, 해당 단계까지의 단계 만 실행됩니다.

  • 패키징 유형 (JAR / WAR / EAR)에 따라 다른 Maven 목표는 Maven 라이프 사이클의 다른 단계에 바인딩됩니다.

다음 예제에서는 빌드 라이프 사이클의 몇 단계에 maven-antrun-plugin : run 목표를 첨부합니다. 이를 통해 라이프 사이클의 단계를 표시하는 텍스트 메시지를 에코 할 수 있습니다.

C : \ MVN \ project 폴더에서 pom.xml을 업데이트했습니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.validate</id>
                  <phase>validate</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>validate phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.compile</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>compile phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.test</id>
                  <phase>test</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>test phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.package</id>
                  <phase>package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>package phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.deploy</id>
                  <phase>deploy</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>deploy phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn compile

Maven은 처리를 시작하고 컴파일 단계까지 빌드 라이프 사이클의 단계를 표시합니다.

[INFO] Scanning for projects...
[INFO] -----------------------------------------------------------------
-
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [compile]
[INFO] -----------------------------------------------------------------
-
[INFO] [antrun:run {execution: id.validate}]
[INFO] Executing tasks
[echo] validate phase
[INFO] Executed tasks
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered
resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory
C:\MVN\project\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [antrun:run {execution: id.compile}]
[INFO] Executing tasks
[echo] compile phase
[INFO] Executed tasks
[INFO] -----------------------------------------------------------------
-
[INFO] BUILD SUCCESSFUL
[INFO] -----------------------------------------------------------------
-
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Jul 07 20:18:25 IST 2012
[INFO] Final Memory: 7M/64M
[INFO] -----------------------------------------------------------------
-

사이트 라이프 사이클

Maven Site 플러그인은 일반적으로 보고서 작성, 사이트 배포 등을위한 새로운 문서를 작성하는 데 사용됩니다. 다음 단계가 있습니다.

  • pre-site
  • site
  • post-site
  • site-deploy

다음 예에서는 maven-antrun-plugin:run사이트 라이프 사이클의 모든 단계에 대한 목표입니다. 이를 통해 라이프 사이클의 단계를 표시하는 텍스트 메시지를 에코 할 수 있습니다.

C : \ MVN \ project 폴더에서 pom.xml을 업데이트했습니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.pre-site</id>
                  <phase>pre-site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>pre-site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.site</id>
                  <phase>site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.post-site</id>
                  <phase>post-site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>post-site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.site-deploy</id>
                  <phase>site-deploy</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>site-deploy phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn site

Maven은 처리를 시작하고 사이트 단계까지의 사이트 라이프 사이클 단계를 표시합니다.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [site]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-site}]
[INFO] Executing tasks
[echo] pre-site phase
[INFO] Executed tasks
[INFO] [site:site {execution: default-site}]

[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
[INFO] Generating "Project Plugins" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Plugin Management" report.
[INFO] Generating "Project Summary" report.

[INFO] [antrun:run {execution: id.site}]
[INFO] Executing tasks
[echo] site phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sat Jul 07 15:25:10 IST 2012
[INFO] Final Memory: 24M/149M
[INFO] ------------------------------------------------------------------

빌드 프로필이란 무엇입니까?

빌드 프로필은 Maven 빌드의 기본값을 설정하거나 재정의하는 데 사용할 수있는 구성 값 집합입니다. 빌드 프로필을 사용하면 프로덕션 대 개발 환경과 같은 다양한 환경에 맞게 빌드를 사용자 지정할 수 있습니다.

프로파일은 activeProfiles / profiles 요소를 사용하여 pom.xml 파일에 지정되며 다양한 방법으로 트리거됩니다. 프로파일은 빌드시 POM을 수정하고 매개 변수에 다른 대상 환경을 제공하는 데 사용됩니다 (예 : 개발, 테스트 및 프로덕션 환경의 데이터베이스 서버 경로).

빌드 프로필 유형

빌드 프로필은 주로 세 가지 유형이 있습니다.

유형 정의 된 위치
프로젝트 당 프로젝트 POM 파일 pom.xml에 정의 됨
사용자 당 Maven 설정 xml 파일 (% USER_HOME % /. m2 / settings.xml)에 정의 됨
글로벌 Maven 전역 설정 xml 파일 (% M2_HOME % / conf / settings.xml)에 정의 됨

프로필 활성화

Maven 빌드 프로필은 다양한 방법으로 활성화 할 수 있습니다.

  • 명령 콘솔 입력을 명시 적으로 사용합니다.
  • 메이븐 설정을 통해.
  • 환경 변수 (사용자 / 시스템 변수)를 기반으로합니다.
  • OS 설정 (예 : Windows 제품군).
  • 존재 / 누락 된 파일.

프로필 활성화 예

프로젝트의 다음 디렉토리 구조를 가정 해 보겠습니다.

자, 아래 src/main/resources, 세 가지 환경 특정 파일이 있습니다-

Sr. 아니. 파일 이름 및 설명
1

env.properties

프로파일이 언급되지 않은 경우 사용되는 기본 구성입니다.

2

env.test.properties

테스트 프로필이 사용될 때 테스트 구성.

env.prod.properties

prod 프로필이 사용될 때 생산 구성.

명시 적 프로필 활성화

다음 예에서는 단계를 테스트하기 위해 maven-antrun-plugin : run 목표를 첨부합니다. 이를 통해 다른 프로필에 대한 텍스트 메시지를 에코 할 수 있습니다. pom.xml을 사용하여 다른 프로필을 정의하고 maven 명령을 사용하여 명령 콘솔에서 프로필을 활성화합니다.

C : \ MVN \ project 폴더에 다음 pom.xml을 만들었다 고 가정합니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <profiles>
      <profile>
         <id>test</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <version>1.1</version>
                  <executions>
                     <execution>
                        <phase>test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <tasks>
                              <echo>Using env.test.properties</echo>
                              <copy file="src/main/resources/env.test.properties"
                                 tofile="${project.build.outputDirectory}
                                 /env.properties"/>
                           </tasks>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn명령. -P 옵션을 사용하여 프로파일 이름을 인수로 전달하십시오.

C:\MVN\project>mvn test -Ptest

Maven은 테스트 빌드 프로필의 결과를 처리하고 표시하기 시작합니다.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] Copying 3 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\project\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\project\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------

There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[echo] Using env.test.properties
[INFO] Executed tasks

[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

[INFO] Total time: 1 second
[INFO] Finished at: Sun Jul 08 14:55:41 IST 2012
[INFO] Final Memory: 8M/64M
[INFO] ------------------------------------------------------------------

이제 연습으로 다음 단계를 수행 할 수 있습니다.

  • pom.xml의 프로필 요소에 다른 프로필 요소를 추가합니다 (기존 프로필 요소를 복사하여 프로필 요소가 끝나는 위치에 붙여 넣기).

  • 이 프로필 요소의 ID를 테스트에서 일반으로 업데이트합니다.

  • env.properties를 에코하도록 태스크 섹션을 업데이트하고 env.properties를 대상 디렉토리에 복사하십시오.

  • 위의 세 단계를 다시 반복하고 id를 prod로 업데이트하고 env.prod.properties에 대한 작업 섹션을 업데이트합니다.

  • 그게 다야. 이제 세 가지 빌드 프로필이 준비되었습니다 (normal / test / prod).

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn명령. -P 옵션을 사용하여 프로파일 이름을 인수로 전달하십시오.

C:\MVN\project>mvn test -Pnormal

C:\MVN\project>mvn test -Pprod

차이점을 보려면 빌드의 출력을 확인하십시오.

Maven 설정을 통한 프로필 활성화

Maven 열기 settings.xml % USER_HOME % /. m2 디렉토리에서 사용할 수있는 파일입니다. %USER_HOME%사용자 홈 디렉토리를 나타냅니다. settings.xml 파일이 없으면 새 파일을 만듭니다.

아래 예제와 같이 활성 프로필 노드를 사용하여 테스트 프로필을 활성 프로필로 추가합니다.

<settings 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/settings-1.0.0.xsd">
   <mirrors>
      <mirror>
         <id>maven.dev.snaponglobal.com</id>
         <name>Internal Artifactory Maven repository</name>
         <url>http://repo1.maven.org/maven2/</url>
         <mirrorOf>*</mirrorOf>
      </mirror>
   </mirrors>
   <activeProfiles>
      <activeProfile>test</activeProfile>
   </activeProfiles>
</settings>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn명령. -P 옵션을 사용하여 프로필 이름을 전달하지 마십시오. Maven은 활성 프로필 인 테스트 프로필의 결과를 표시합니다.

C:\MVN\project>mvn test

환경 변수를 통한 프로필 활성화

이제 maven settings.xml에서 활성 프로필을 제거하고 pom.xml에 언급 된 테스트 프로필을 업데이트합니다. 아래와 같이 프로필 요소에 활성화 요소를 추가합니다.

시스템 속성 "env"가 "test"값으로 지정되면 테스트 프로필이 트리거됩니다. 환경 변수 "env"를 만들고 해당 값을 "test"로 설정합니다.

<profile>
   <id>test</id>
   <activation>
      <property>
         <name>env</name>
         <value>test</value>
      </property>
   </activation>
</profile>

명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn test

운영 체제를 통한 프로필 활성화

아래와 같이 os 세부 정보를 포함하는 활성화 요소입니다. 이 테스트 프로필은 시스템이 Windows XP 일 때 트리거됩니다.

<profile>
   <id>test</id>
   <activation>
      <os>
         <name>Windows XP</name>
         <family>Windows</family>
         <arch>x86</arch>
         <version>5.1.2600</version>
      </os>
   </activation>
</profile>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn명령. -P 옵션을 사용하여 프로필 이름을 전달하지 마십시오. Maven은 활성 프로필 인 테스트 프로필의 결과를 표시합니다.

C:\MVN\project>mvn test

존재 / 누락 된 파일을 통한 프로필 활성화

이제 아래와 같이 OS 세부 정보를 포함하는 활성화 요소입니다. 테스트 프로필은 다음과 같은 경우에 트리거됩니다.target/generated-sources/axistools/wsdl2java/com/companyname/group 누락.

<profile>
   <id>test</id>
   <activation>
      <file>
         <missing>target/generated-sources/axistools/wsdl2java/
           com/companyname/group</missing>
      </file>
   </activation>
</profile>

이제 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn명령. -P 옵션을 사용하여 프로필 이름을 전달하지 마십시오. Maven은 활성 프로필 인 테스트 프로필의 결과를 표시합니다.

C:\MVN\project>mvn test

Maven 저장소 란 무엇입니까?

Maven 용어에서 저장소는 모든 프로젝트 jar, 라이브러리 jar, 플러그인 또는 기타 프로젝트 특정 아티팩트가 저장되고 Maven에서 쉽게 사용할 수있는 디렉토리입니다.

Maven 저장소에는 세 가지 유형이 있습니다. 다음 그림은 이러한 세 가지 유형에 대한 아이디어를 제공합니다.

  • local
  • central
  • remote

로컬 저장소

Maven 로컬 저장소는 컴퓨터의 폴더 위치입니다. 처음으로 maven 명령을 실행할 때 생성됩니다.

Maven 로컬 저장소는 프로젝트의 모든 종속성 (라이브러리 jar, 플러그인 jar 등)을 유지합니다. Maven 빌드를 실행하면 Maven은 모든 종속성 jar를 로컬 저장소에 자동으로 다운로드합니다. 프로젝트가 빌드 될 때마다 원격 컴퓨터에 저장된 종속성에 대한 참조를 피하는 데 도움이됩니다.

기본적으로 Maven 로컬 저장소는 % USER_HOME % 디렉토리에 Maven에 의해 생성됩니다. 기본 위치를 재정의하려면 % M2_HOME % \ conf 디렉터리에있는 Maven settings.xml 파일에서 다른 경로를 언급합니다.

<settings xmlns = "http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <localRepository>C:/MyLocalRepository</localRepository>
</settings>

Maven 명령을 실행하면 Maven이 사용자 지정 경로에 종속성을 다운로드합니다.

중앙 저장소

Maven 중앙 저장소는 Maven 커뮤니티에서 제공하는 저장소입니다. 일반적으로 사용되는 많은 라이브러리가 포함되어 있습니다.

Maven이 로컬 저장소에서 종속성을 찾지 못하면 다음 URL을 사용하여 중앙 저장소에서 검색을 시작합니다. https://repo1.maven.org/maven2/

중앙 저장소의 주요 개념은 다음과 같습니다-

  • 이 저장소는 Maven 커뮤니티에서 관리합니다.
  • 구성 할 필요가 없습니다.
  • 검색하려면 인터넷 액세스가 필요합니다.

중앙 Maven 저장소의 내용을 탐색하기 위해 Maven 커뮤니티는 URL을 제공했습니다. https://search.maven.org/#browse. 이 라이브러리를 사용하여 개발자는 중앙 저장소에서 사용 가능한 모든 라이브러리를 검색 할 수 있습니다.

원격 저장소

때로는 Maven이 중앙 저장소에서도 언급 된 종속성을 찾지 못합니다. 그런 다음 빌드 프로세스를 중지하고 오류 메시지를 콘솔에 출력합니다. 이러한 상황을 방지하기 위해 Maven은Remote Repository, 필요한 라이브러리 또는 기타 프로젝트 jar를 포함하는 개발자 고유의 사용자 정의 저장소입니다.

예를 들어, 아래에 언급 된 POM.xml을 사용하면 Maven은 동일한 pom.xml에 언급 된 원격 저장소에서 종속성 (중앙 저장소에서 사용할 수 없음)을 다운로드합니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Maven 종속성 검색 시퀀스

Maven 빌드 명령을 실행할 때 Maven은 다음 순서로 종속성 라이브러리를 찾기 시작합니다.

  • Step 1 − 로컬 저장소에서 검색 종속성을 찾을 수없는 경우 2 단계로 이동하고 그렇지 않으면 추가 처리를 수행합니다.

  • Step 2 − 중앙 저장소에서 검색 종속성을 찾을 수없고 원격 저장소 / 저장소가 언급 된 경우 4 단계로 이동합니다. 그렇지 않으면 나중에 참조 할 수 있도록 로컬 저장소로 다운로드됩니다.

  • Step 3 − 원격 저장소가 언급되지 않은 경우 Maven은 단순히 처리를 중지하고 오류를 발생시킵니다 (Unable to find dependency).

  • Step 4− 원격 저장소 또는 저장소에서 검색 종속성이 발견되면 나중에 참조 할 수 있도록 로컬 저장소에 다운로드됩니다. 그렇지 않으면 Maven이 처리를 중지하고 오류를 발생시킵니다 (종속성을 찾을 수 없음).

Maven 플러그인이란 무엇입니까?

Maven은 실제로 모든 작업이 실제로 플러그인에 의해 수행되는 플러그인 실행 프레임 워크입니다. Maven 플러그인은 일반적으로 다음과 같이 사용됩니다.

  • jar 파일 생성
  • 전쟁 파일 생성
  • 코드 파일 컴파일
  • 코드 단위 테스트
  • 프로젝트 문서 작성
  • 프로젝트 보고서 작성

플러그인은 일반적으로 다음 구문을 사용하여 실행할 수있는 목표 세트를 제공합니다.

mvn [plugin-name]:[goal-name]

예를 들어 Java 프로젝트는 다음 명령을 실행하여 maven-compiler-plugin의 compile-goal로 컴파일 할 수 있습니다.

mvn compiler:compile

플러그인 유형

Maven은 다음 두 가지 유형의 플러그인을 제공했습니다.

Sr. 아니. 유형 및 설명
1

Build plugins

빌드 프로세스 중에 실행되며 pom.xml의 <build /> 요소에서 구성해야합니다.

2

Reporting plugins

사이트 생성 프로세스 중에 실행되며 pom.xml의 <reporting /> 요소에 구성되어야합니다.

다음은 몇 가지 일반적인 플러그인 목록입니다.

Sr. 아니. 플러그인 및 설명
1

clean

빌드 후 대상을 정리합니다. 대상 디렉터리를 삭제합니다.

2

compiler

Java 소스 파일을 컴파일합니다.

surefire

JUnit 단위 테스트를 실행합니다. 테스트 보고서를 생성합니다.

4

jar

현재 프로젝트에서 JAR 파일을 빌드합니다.

5

war

현재 프로젝트에서 WAR 파일을 빌드합니다.

6

javadoc

프로젝트에 대한 Javadoc을 생성합니다.

7

antrun

빌드에서 언급 된 모든 단계에서 ant 작업 세트를 실행합니다.

Example

우리는 사용했습니다 maven-antrun-plugin콘솔에 데이터를 인쇄하기 위해 예제에서 광범위하게. 빌드 프로필 장을 참조하십시오. 더 나은 방법으로 이해하고 C : \ MVN \ project 폴더에 pom.xml을 만듭니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.clean</id>
                  <phase>clean</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>clean phase</echo>
                     </tasks>
                  </configuration>
               </execution>     
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

다음으로 명령 콘솔을 열고 pom.xml이 포함 된 폴더로 이동하여 다음을 실행합니다. mvn 명령.

C:\MVN\project>mvn clean

Maven은 처리를 시작하고 클린 라이프 사이클의 클린 단계를 표시합니다.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO]    task-segment: [post-clean]
[INFO] ------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] [antrun:run {execution: id.clean}]
[INFO] Executing tasks
     [echo] clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
[INFO] Final Memory: 4M/44M
[INFO] ------------------------------------------------------------------

위의 예는 다음과 같은 주요 개념을 보여줍니다.

  • 플러그인은 plugins 요소를 사용하여 pom.xml에 지정됩니다.

  • 각 플러그인은 여러 목표를 가질 수 있습니다.

  • 플러그인이 해당 단계 요소를 사용하여 처리를 시작해야하는 단계를 정의 할 수 있습니다. 우리는 사용했습니다clean 단계.

  • 작업을 플러그인 목표에 바인딩하여 실행할 작업을 구성 할 수 있습니다. 우리는 바운드했습니다echo 작업 runmaven-antrun-plugin의 목표 .

  • Maven은 로컬 저장소에서 사용할 수없는 경우 플러그인을 다운로드하고 처리를 시작합니다.

Maven 사용 archetype프로젝트를 생성하는 플러그인. 간단한 자바 애플리케이션을 생성하기 위해 maven-archetype-quickstart 플러그인을 사용합니다. 아래 예제에서는 C : \ MVN 폴더에 maven 기반 자바 애플리케이션 프로젝트를 생성합니다.

명령 콘솔을 열고 C : \ MVN 디렉터리로 이동하여 다음을 실행 해 보겠습니다. mvn 명령.

C:\MVN>mvn archetype:generate
-DgroupId = com.companyname.bank 
-DartifactId = consumerBanking 
-DarchetypeArtifactId = maven-archetype-quickstart 
-DinteractiveMode = false

Maven은 처리를 시작하고 완전한 자바 애플리케이션 프로젝트 구조를 생성합니다.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] -------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Batch mode
[INFO] -------------------------------------------------------------------
[INFO] Using following parameters for creating project
from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] -------------------------------------------------------------------

[INFO] Parameter: groupId, Value: com.companyname.bank
[INFO] Parameter: packageName, Value: com.companyname.bank
[INFO] Parameter: package, Value: com.companyname.bank
[INFO] Parameter: artifactId, Value: consumerBanking
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\consumerBanking
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 14 seconds
[INFO] Finished at: Tue Jul 10 15:38:58 IST 2012
[INFO] Final Memory: 21M/124M
[INFO] ------------------------------------------------------------------

이제 C : / MVN 디렉토리로 이동합니다. consumer Banking (artifactId에 지정된대로)이라는 이름의 자바 애플리케이션 프로젝트가 생성 된 것을 볼 수 있습니다. Maven은 아래와 같이 표준 디렉토리 레이아웃을 사용합니다.

위의 예를 사용하여 다음과 같은 주요 개념을 이해할 수 있습니다.

Sr. 아니. 폴더 구조 및 설명
1

consumerBanking

src 폴더 및 pom.xml 포함

2

src/main/java

패키지 구조 (com / companyName / bank) 아래에 Java 코드 파일이 포함되어 있습니다.

src/main/test

패키지 구조 (com / companyName / bank) 아래에 테스트 Java 코드 파일이 포함되어 있습니다.

4

src/main/resources

여기에는 이미지 / 속성 파일이 포함되어 있습니다 (위의 예에서는이 구조를 수동으로 만들어야 함).

관찰하면 Maven이 샘플 Java 소스 파일과 Java 테스트 파일도 생성했음을 알 수 있습니다. C : \ MVN \ consumerBanking \ src \ main \ java \ com \ companyname \ bank 폴더를 열면 App.java가 표시됩니다.

package com.companyname.bank;

/**
 * Hello world!
 *
 */
public class App {
   public static void main( String[] args ){
      System.out.println( "Hello World!" );
   }
}

C : \ MVN \ consumerBanking \ src \ test \ java \ com \ companyname \ bank 폴더를 열어 AppTest.java를 확인합니다.

package com.companyname.bank;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Unit test for simple App.
 */
public class AppTest extends TestCase {
   /**
      * Create the test case
      *
      * @param testName name of the test case
   */
   public AppTest( String testName ) {
      super( testName );
   }

   /**
      * @return the suite of tests being tested
   */
   public static Test suite() {
      return new TestSuite( AppTest.class );
   }

   /**
      * Rigourous Test :-)
   */
   public void testApp() {
      assertTrue( true );
   }
}

개발자는 위의 표에 언급 된대로 파일을 배치해야하며 Maven은 모든 빌드 관련 복잡성을 처리합니다.

다음 장에서는 Maven Build and Test Project를 사용하여 프로젝트를 빌드하고 테스트하는 방법에 대해 설명합니다.

Project Creation 장에서 배운 것은 Maven을 사용하여 Java 애플리케이션을 만드는 방법입니다. 이제 애플리케이션을 빌드하고 테스트하는 방법을 살펴 보겠습니다.

자바 애플리케이션을 만든 C : / MVN 디렉토리로 이동합니다. 열다consumerBanking폴더. 당신은 볼 것입니다POM.xml 다음 내용으로 파일.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
      </dependency>
   </dependencies>  
</project>

여기에서 Maven은 이미 Junit을 테스트 프레임 워크로 추가했습니다. 기본적으로 Maven은 소스 파일을 추가합니다.App.java 및 테스트 파일 AppTest.java 이전 장에서 설명한대로 기본 디렉토리 구조에서.

명령 콘솔을 열고 C : \ MVN \ consumerBanking 디렉터리로 이동하여 다음을 실행 해 보겠습니다. mvn 명령.

C:\MVN\consumerBanking>mvn clean package

Maven이 프로젝트 빌드를 시작합니다.

[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------
[INFO] Building consumerBanking
[INFO] task-segment: [clean, package]
[INFO] -------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\MVN\consumerBanking\target
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\consumerBanking\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 1 source file to C:\MVN\consumerBanking\target\classes
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\consumerBanking\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to C:\MVN\consumerBanking\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\consumerBanking\target\surefire-reports

-----------------------------------------------------
T E S T S
-----------------------------------------------------

Running com.companyname.bank.AppTest

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\consumerBanking\target\
consumerBanking-1.0-SNAPSHOT.jar

[INFO]-----------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]-----------------------------------------------

[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Jul 10 16:52:18 IST 2012
[INFO] Final Memory: 16M/89M
[INFO]-----------------------------------------------

프로젝트를 빌드하고 최종 jar 파일을 만들었습니다. 다음은 주요 학습 개념입니다.

  • 우리는 maven에 두 가지 목표를 제공합니다. 먼저 대상 디렉터리를 정리 (clean) 한 다음 프로젝트 빌드 출력을 jar (패키지)로 패키지화합니다.

  • 패키지 된 jar는 consumerBanking \ target 폴더에서 consumerBanking-1.0-SNAPSHOT.jar로 사용할 수 있습니다.

  • 테스트 보고서는 consumerBanking \ target \ surefire-reports 폴더에 있습니다.

  • Maven은 소스 코드 파일을 컴파일 한 다음 소스 코드 파일을 테스트합니다.

  • 그런 다음 Maven이 테스트 케이스를 실행합니다.

  • 마지막으로 Maven은 패키지를 생성합니다.

이제 명령 콘솔을 열고 C : \ MVN \ consumerBanking \ target \ classes 디렉토리로 이동하여 다음 java 명령을 실행하십시오.

>java com.companyname.bank.App

다음과 같은 결과를 볼 수 있습니다.

Hello World!

Java 소스 파일 추가

프로젝트에 Java 파일을 추가하는 방법을 살펴 보겠습니다. C : \ MVN \ consumerBanking \ src \ main \ java \ com \ companyname \ bank 폴더를 열고 Util.java로 Util 클래스를 만듭니다.

package com.companyname.bank;

public class Util {
   public static void printMessage(String message){
      System.out.println(message);
   }
}

Util 클래스를 사용하도록 App 클래스를 업데이트하십시오.

package com.companyname.bank;

/**
   * Hello world!
   *
*/

public class App {
   public static void main( String[] args ){
      Util.printMessage("Hello World!");
   }
}

이제 명령 콘솔을 열고 C:\MVN\consumerBanking 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

>mvn clean compile

Maven 빌드가 성공하면 C : \ MVN \ consumerBanking \ target \ classes 디렉토리로 이동하여 다음 java 명령을 실행합니다.

>java -cp com.companyname.bank.App

다음과 같은 결과를 볼 수 있습니다.

Hello World!

아시다시피 Maven은 Repositories 개념을 사용하여 종속성 관리를 수행합니다. 그러나 원격 저장소 및 중앙 저장소에서 종속성을 사용할 수 없으면 어떻게됩니까? Maven은 개념을 사용하여 이러한 시나리오에 대한 답변을 제공합니다.External Dependency.

예를 들어, 'Creating Java Project'장에서 생성 한 프로젝트를 다음과 같이 변경해 보겠습니다.

  • 더하다 lib 폴더를 src 폴더에 추가합니다.

  • 모든 jar를 lib 폴더에 복사하십시오. 우리는 사용했습니다ldapjdk.jar, 이는 LDAP 작업을위한 도우미 라이브러리입니다.

이제 프로젝트 구조는 다음과 같아야합니다.

여기에는 프로젝트에 특정한 고유 라이브러리가 있으며 이는 일반적인 경우이며 maven에서 다운로드 할 수있는 저장소에서 사용할 수없는 jar가 포함되어 있습니다. 코드가 Maven과 함께이 라이브러리를 사용하는 경우 컴파일 단계에서이 라이브러리를 다운로드하거나 참조 할 수 없으므로 Maven 빌드가 실패합니다.

상황을 처리하기 위해이 외부 종속성을 maven에 추가하겠습니다. pom.xml 다음과 같은 방법으로.

<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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.bank</groupId>
   <artifactId>consumerBanking</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>consumerBanking</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

</project>

위의 예에서 종속성 아래에있는 두 번째 종속성 요소를 살펴보면 다음과 같은 주요 개념이 지워집니다. External Dependency.

  • 외부 종속성 (라이브러리 jar 위치)은 다른 종속성과 동일한 방식으로 pom.xml에서 구성 할 수 있습니다.

  • 라이브러리 이름과 동일한 groupId를 지정하십시오.

  • 라이브러리 이름과 동일한 artifactId를 지정하십시오.

  • 범위를 시스템으로 지정하십시오.

  • 프로젝트 위치에 상대적인 시스템 경로를 지정합니다.

이제 외부 종속성에 대해 명확하고 Maven 프로젝트에서 외부 종속성을 지정할 수 있기를 바랍니다.

이 튜토리얼은 한 번에 애플리케이션 문서를 작성하는 방법을 알려줍니다. 그럼 시작하겠습니다. Java를 생성 한 C : / MVN 디렉토리로 이동합니다.consumerBanking이전 장에서 제공된 예제를 사용하여 응용 프로그램. 열다consumerBanking 폴더를 열고 다음을 실행하십시오. mvn 명령.

C:\MVN>mvn site

Maven이 프로젝트 빌드를 시작합니다.

[INFO] Scanning for projects...
[INFO]-----------------------------------------------
[INFO] Building consumerBanking
[INFO] task-segment: [site]
[INFO]-----------------------------------------------
[INFO] [site:site {execution: default-site}]
[INFO] artifact org.apache.maven.skins:maven-default-skin:
checking for updates from central

[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Plugin Management" report.
[INFO] Generating "Project Summary" report.

[INFO]-----------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]-----------------------------------------------

[INFO] Total time: 16 seconds
[INFO] Finished at: Wed Jul 11 18:11:18 IST 2012
[INFO] Final Memory: 23M/148M
[INFO]-----------------------------------------------

이제 프로젝트 문서가 준비되었습니다. Maven은 대상 디렉터리 내에 사이트를 만들었습니다.

C : \ MVN \ consumerBanking \ target \ site 폴더를 엽니 다. 문서를 보려면 index.html을 클릭하십시오.

Maven은 여러 소스 형식을 공통 문서 모델로 읽는 Doxia 라는 문서 처리 엔진을 사용하여 문서를 만듭니다 . 프로젝트에 대한 문서를 작성하려면 Doxia에서 구문 분석 한 다음과 같은 일반적으로 사용되는 형식으로 콘텐츠를 작성할 수 있습니다.

형식 이름 기술 참고
XDoc Maven 1.x 문서 형식

https://jakarta.apache.org/site

FML FAQ 문서에 사용

https://maven.apache.org

Maven은 사용자에게 다음과 같은 개념을 사용하여 다양한 유형의 프로젝트 템플릿 (숫자 614 개)의 매우 큰 목록을 제공합니다. Archetype. Maven은 사용자가 다음 명령을 사용하여 새 Java 프로젝트를 빠르게 시작할 수 있도록 도와줍니다.

mvn archetype:generate

아키 타입이란?

Archetype은 템플릿에 따라 프로젝트 구조를 만드는 작업을 수행하는 Maven 플러그인입니다. 여기서 간단한 자바 애플리케이션을 만들기 위해 빠른 시작 아키 타입 플러그인을 사용할 것입니다.

프로젝트 템플릿 사용

명령 콘솔을 열고 C:\ > MVN 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

C:\MVN>mvn archetype:generate

Maven은 처리를 시작하고 필요한 아키타 입을 선택하도록 요청할 것입니다.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] -------------------------------------------------------------------
[INFO] Preparing archetype:generate
...

600: remote −> org.trailsframework:trails-archetype (-)
601: remote −> org.trailsframework:trails-secure-archetype (-)
602: remote −> org.tynamo:tynamo-archetype (-)
603: remote −> org.wicketstuff.scala:wicket-scala-archetype (-)
604: remote −> org.wicketstuff.scala:wicketstuff-scala-archetype

Basic setup for a project that combines Scala and Wicket,
depending on the Wicket-Scala project.
Includes an example Specs test.)

605: remote −> org.wikbook:wikbook.archetype (-)
606: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-glassfish (-)
607: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-spring (-)
608: remote −> org.xwiki.commons:xwiki-commons-component-archetype
   (Make it easy to create a maven project for creating XWiki Components.)
609: remote −> org.xwiki.rendering:xwiki-rendering-archetype-macro
   (Make it easy to create a maven project for creating XWiki Rendering Macros.)
610: remote −> org.zkoss:zk-archetype-component (The ZK Component archetype)
611: remote −> org.zkoss:zk-archetype-webapp (The ZK wepapp archetype)
612: remote −> ru.circumflex:circumflex-archetype (-)
613: remote −> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
614: remote −> sk.seges.sesam:sesam-annotation-archetype (-)
Choose a number or apply filter
(format: [groupId:]artifactId, case sensitive contains): 203:

Enter를 눌러 기본 옵션을 선택하십시오 (203 : maven-archetype-quickstart).

Maven은 특정 버전의 아키타 입을 요청합니다.

Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:

Enter를 눌러 기본 옵션을 선택하십시오 (6 : maven-archetype-quickstart : 1.1).

Maven은 프로젝트 세부 사항을 묻습니다. 질문에 따라 프로젝트 세부 정보를 입력하십시오. 기본값이 제공되면 Enter를 누르십시오. 자신의 값을 입력하여 재정의 할 수 있습니다.

Define value for property 'groupId': : com.companyname.insurance
Define value for property 'artifactId': : health
Define value for property 'version': 1.0-SNAPSHOT:
Define value for property 'package': com.companyname.insurance:

Maven은 프로젝트 세부 사항 확인을 요청합니다. Enter를 누르거나 Y를 누르십시오.

Confirm properties configuration:
groupId: com.companyname.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.companyname.insurance
Y:

이제 Maven이 프로젝트 구조 생성을 시작하고 다음을 표시합니다.

[INFO]-----------------------------------------------
[INFO] Using following parameters for creating project
from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO]-----------------------------------------------

[INFO] Parameter: groupId, Value: com.companyname.insurance
[INFO] Parameter: packageName, Value: com.companyname.insurance
[INFO] Parameter: package, Value: com.companyname.insurance
[INFO] Parameter: artifactId, Value: health
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\health
[INFO]-----------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]-----------------------------------------------
[INFO] Total time: 4 minutes 12 seconds
[INFO] Finished at: Fri Jul 13 11:10:12 IST 2012
[INFO] Final Memory: 20M/90M
[INFO]-----------------------------------------------

생성 된 프로젝트

이제 이동 C:\ > MVN예배 규칙서. 생성 된 자바 애플리케이션 프로젝트가 표시됩니다.health, 다음과 같이 주어졌습니다. artifactId프로젝트 생성시. Maven은 아래와 같이 프로젝트에 대한 표준 디렉토리 레이아웃을 생성합니다.

POM.xml 생성

Maven은 아래와 같이 프로젝트에 대한 POM.xml 파일을 생성합니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.insurance</groupId>
   <artifactId>health</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

App.java 생성

Maven은 아래 나열된 프로젝트에 대한 샘플 Java 소스 파일 App.java를 생성합니다.

위치: C:\ > MVN > health > src > main > java > com > companyname > insurance > App.java.

package com.companyname.insurance;

/**
   * Hello world!
   *
*/
public class App {
   public static void main( String[] args ) {
      System.out.println( "Hello World!" );
   }
}

AppTest.java 생성

Maven은 아래 나열된 프로젝트에 대한 샘플 Java 소스 테스트 파일 인 AppTest.java를 생성합니다.

위치: C:\ > MVN > health > src > test > java > com > companyname > insurance > AppTest.java.

package com.companyname.insurance;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
   * Unit test for simple App.
*/
public class AppTest extends TestCase {
   /**
      * Create the test case
      *
     * @param testName name of the test case
   */
   public AppTest( String testName ) {
      super( testName );
   }
   /**
      * @return the suite of tests being tested
   */
   public static Test suite() {
      return new TestSuite( AppTest.class );
   }
   /**
      * Rigourous Test :-)
   */
   public void testApp() {
      assertTrue( true );
   }
}

이제 Maven의 힘을 볼 수 있습니다. Maven에서 단일 명령을 사용하여 모든 종류의 프로젝트를 만들 수 있으며 개발을 시작할 수 있습니다.

다양한 아키 타입

Sr. 아니. 아키 타입 아티팩트 ID 및 설명
1

maven-archetype-archetype

샘플 아키타 입을 포함하는 아키 타입.

2

maven-archetype-j2ee-simple

단순화 된 샘플 J2EE 애플리케이션을 포함하는 아키 타입.

maven-archetype-mojo

샘플 Maven 플러그인 샘플을 포함하는 아키 타입.

4

maven-archetype-plugin

샘플 Maven 플러그인을 포함하는 아키 타입.

5

maven-archetype-plugin-site

샘플 Maven 플러그인 사이트를 포함하는 아키 타입.

6

maven-archetype-portlet

샘플 JSR-268 포틀릿을 포함하는 아키 타입.

7

maven-archetype-quickstart

샘플 Maven 프로젝트를 포함하는 아키 타입.

8

maven-archetype-simple

간단한 Maven 프로젝트를 포함하는 아키 타입.

9

maven-archetype-site

APT, XDoc 및 FML과 같은 지원되는 문서 유형 중 일부를 보여주고 사이트를 i18n하는 방법을 보여주는 샘플 Maven 사이트를 포함하는 아키 타입입니다.

10

maven-archetype-site-simple

샘플 Maven 사이트를 포함하는 아키 타입.

11

maven-archetype-webapp

샘플 Maven Webapp 프로젝트를 포함하는 아키 타입.

대규모 소프트웨어 애플리케이션은 일반적으로 여러 모듈로 구성되며 여러 팀이 동일한 애플리케이션의 서로 다른 모듈에서 작업하는 일반적인 시나리오입니다. 예를 들어 한 팀이 애플리케이션의 프런트 엔드에서 app-ui 프로젝트 (app-ui.jar : 1.0)로 작업하고 있고 데이터 서비스 프로젝트 (data-service.jar : 1.0)를 사용하고 있다고 가정 해 보겠습니다.

이제 데이터 서비스를 담당하는 팀이 빠른 속도로 버그를 수정하거나 개선하고 있으며 거의 ​​격일로 라이브러리를 원격 저장소에 릴리스 할 수 있습니다.

이제 데이터 서비스 팀이 격일로 새 버전을 업로드하면 다음과 같은 문제가 발생합니다.

  • 데이터 서비스 팀은 업데이트 된 코드를 출시 할 때마다 앱 UI 팀에 알려야합니다.

  • app-ui 팀은 업데이트 된 버전을 얻기 위해 pom.xml을 정기적으로 업데이트해야했습니다.

이런 상황을 처리하기 위해 SNAPSHOT 개념이 작용합니다.

SNAPSHOT은 무엇입니까?

SNAPSHOT은 현재 개발 사본을 나타내는 특수 버전입니다. 일반 버전과 달리 Maven은 모든 빌드에 대해 원격 저장소에서 새 SNAPSHOT 버전을 확인합니다.

이제 데이터 서비스 팀은 이전 SNAPSHOT jar를 대체하는 데이터 서비스 : 1.0-SNAPSHOT과 같이 저장소에 매번 업데이트 된 코드의 SNAPSHOT을 릴리스 할 것입니다.

스냅 샷 대 버전

Version의 경우 Maven이 언급 된 버전 (예 : data-service : 1.0)을 한 번 다운로드하면 저장소에서 사용 가능한 최신 1.0을 다운로드하려고 시도하지 않습니다. 업데이트 된 코드를 다운로드하려면 데이터 서비스 버전을 1.1로 업그레이드해야합니다.

SNAPSHOT의 경우, Maven은 app-ui 팀이 프로젝트를 빌드 할 때마다 최신 SNAPSHOT (data-service : 1.0-SNAPSHOT)를 자동으로 가져옵니다.

app-ui pom.xml

app-ui 프로젝트는 1.0-SNAPSHOT의 데이터 서비스를 사용하고 있습니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>app-ui</groupId>
   <artifactId>app-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>data-service</groupId>
         <artifactId>data-service</artifactId>
         <version>1.0-SNAPSHOT</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

데이터 서비스 pom.xml

data-service 프로젝트는 모든 사소한 변경에 대해 1.0-SNAPSHOT을 릴리스합니다.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>data-service</groupId>
   <artifactId>data-service</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
</project>

SNAPSHOT의 경우 Maven은 매일 최신 SNAPSHOT을 자동으로 가져 오지만 maven 명령에 -U 스위치를 사용하여 최신 스냅 샷 빌드를 다운로드하도록 강제 할 수 있습니다.

mvn clean package -U

명령 콘솔을 열고 C:\ > MVN > app-ui 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

C:\MVN\app-ui>mvn clean package -U

Maven은 데이터 서비스의 최신 SNAPSHOT을 다운로드 한 후 프로젝트 빌드를 시작합니다.

[INFO] Scanning for projects...
[INFO]--------------------------------------------
[INFO] Building consumerBanking
[INFO]    task-segment: [clean, package]
[INFO]--------------------------------------------
[INFO] Downloading data-service:1.0-SNAPSHOT
[INFO] 290K downloaded.
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\MVN\app-ui\target
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\main\resources
[INFO] [compiler:compile {execution:default-compile}]
[INFO] Compiling 1 source file to C:\MVN\app-ui\target\classes
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to C:\MVN\app-ui\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\app-ui\target\
surefire-reports

--------------------------------------------------
 T E S T S
--------------------------------------------------

Running com.companyname.bank.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-ui\target\
app-ui-1.0-SNAPSHOT.jar
[INFO]--------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]--------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: 2015-09-27T12:30:02+05:30
[INFO] Final Memory: 16M/89M
[INFO]------------------------------------------------------------------------

빌드 자동화는 종속 프로젝트가 안정적인지 확인하기 위해 프로젝트 빌드가 성공적으로 완료되면 종속 프로젝트 빌드 프로세스가 시작되는 시나리오를 정의합니다.

Example

팀이 프로젝트를 개발하고 있다고 생각해 bus-core-api 두 개의 다른 프로젝트 app-web-uiapp-desktop-ui 의존적입니다.

app-web-ui 프로젝트에서 1.0-SNAPSHOT을 사용하고 있습니다. bus-core-api 계획.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>app-web-ui</groupId>
   <artifactId>app-web-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
         <groupId>bus-core-api</groupId>
            <artifactId>bus-core-api</artifactId>
            <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

app-desktop-ui 프로젝트에서 1.0-SNAPSHOT을 사용하고 있습니다. bus-core-api 계획.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>app_desktop_ui</groupId>
   <artifactId>app_desktop_ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>app_desktop_ui</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>bus_core_api</groupId>
         <artifactId>bus_core_api</artifactId>
         <version>1.0-SNAPSHOT</version>
         <scope>system</scope>
         <systemPath>C:\MVN\bus_core_api\target\bus_core_api-1.0-SNAPSHOT.jar</systemPath>
      </dependency>
   </dependencies>
</project>

bus-core-api 프로젝트-

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>bus_core_api</groupId>
   <artifactId>bus_core_api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>   
</project>

이제 팀 app-web-uiapp-desktop-ui 프로젝트는 빌드 프로세스가 항상 시작되어야합니다. bus-core-api 프로젝트 변경.

스냅 샷을 사용하여 최신 bus-core-api 프로젝트를 사용해야하지만 위의 요구 사항을 충족하려면 추가 작업이 필요합니다.

다음 두 가지 방법으로 진행할 수 있습니다.

  • 킥오프를 위해 bus-core-api pom에 빌드 후 목표 추가 app-web-uiapp-desktop-ui 빌드합니다.

  • Hudson과 같은 CI (Continuous Integration) 서버를 사용하여 빌드 자동화를 자동으로 관리합니다.

Maven 사용

최신 정보 bus-core-api 프로젝트 pom.xml.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <build>
      <plugins>
         <plugin>
         <artifactId>maven-invoker-plugin</artifactId>
         <version>1.6</version>
         <configuration>
            <debug>true</debug>
            <pomIncludes>
               <pomInclude>app-web-ui/pom.xml</pomInclude>
               <pomInclude>app-desktop-ui/pom.xml</pomInclude>
            </pomIncludes>
         </configuration>
         <executions>
            <execution>
               <id>build</id>
               <goals>
                  <goal>run</goal>
               </goals>
            </execution>
         </executions>
         </plugin>
      </plugins>
   <build>
</project>

명령 콘솔을 열고 C:\ > MVN > bus-core-api 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

>mvn clean package -U

Maven이 프로젝트 빌드를 시작합니다. bus-core-api.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building bus-core-api
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\bus-core-ui\target\
bus-core-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

한번 bus-core-api 빌드가 성공하면 Maven이 app-web-ui 계획.

[INFO] ------------------------------------------------------------------
[INFO] Building app-web-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-web-ui\target\
app-web-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

한번 app-web-ui 빌드가 성공하면 Maven이 app-desktop-ui 계획.

[INFO] ------------------------------------------------------------------
[INFO] Building app-desktop-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-desktop-ui\target\
app-desktop-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

Maven과 함께 지속적 통합 서비스 사용

개발자에게는 CI 서버를 사용하는 것이 더 좋습니다. 업데이트 할 필요가 없습니다.bus-core-api 프로젝트에 종속 프로젝트로 새 프로젝트 (예 : app-mobile-ui)가 추가 될 때마다 bus-core-api계획. Hudsion은 Apache tomcat 및 glassfish 애플리케이션 서버와 같은 서블릿 컨테이너에있는 Java로 작성된 지속적인 통합 도구입니다. Hudson은 Maven 종속성 관리를 사용하여 빌드 자동화를 자동으로 관리합니다. 다음 스냅 샷은 Hudson 도구의 역할을 정의합니다.

Hudson은 각 프로젝트 빌드를 작업으로 간주합니다. 프로젝트 코드가 SVN (또는 Hudson에 매핑 된 소스 관리 도구)에 체크인되면 Hudson은 빌드 작업을 시작하고이 작업이 완료되면 다른 종속 작업 (다른 종속 프로젝트)을 자동으로 시작합니다.

위의 예에서 bus-core-ui소스 코드가 SVN에서 업데이트되고 Hudson이 빌드를 시작합니다. 빌드가 성공하면 Hudson은 종속 프로젝트를 자동으로 찾고 빌드를 시작합니다.app-web-uiapp-desktop-ui 프로젝트.

Maven의 핵심 기능 중 하나는 종속성 관리입니다. 다중 모듈 프로젝트 (수백 개의 모듈 / 하위 프로젝트로 구성됨)를 처리해야하는 경우 종속성 관리는 어려운 작업입니다. Maven은 이러한 시나리오를 관리하기위한 높은 수준의 제어 기능을 제공합니다.

전 이적 종속성 검색

A라는 라이브러리가 B와 같이 다른 라이브러리에 의존하는 경우가 자주 발생합니다. 다른 프로젝트 C가 A를 사용하려는 경우 해당 프로젝트도 라이브러리 B를 사용해야합니다.

Maven은 필요한 모든 라이브러리를 검색하기 위해 이러한 요구 사항을 방지하는 데 도움이됩니다. Maven은 종속성의 프로젝트 파일 (pom.xml)을 읽고 종속성을 파악하는 등의 작업을 수행합니다.

우리는 각 프로젝트 pom에서 직접적인 의존성을 정의하기 만하면됩니다. Maven이 나머지를 자동으로 처리합니다.

전 이적 종속성을 사용하면 포함 된 라이브러리의 그래프가 빠르게 크게 증가 할 수 있습니다. 중복 라이브러리가있는 경우 케이스가 발생할 수 있습니다. Maven은 전 이적 종속성의 범위를 제어하는 ​​몇 가지 기능을 제공합니다.

Sr. 아니. 기능 및 설명
1

Dependency mediation

여러 버전의 아티팩트가 발견 될 때 사용할 종속성 버전을 결정합니다. 두 종속성 버전이 종속성 트리에서 동일한 깊이에있는 경우 처음 선언 된 종속성이 사용됩니다.

2

Dependency management

전이 종속성에서 발견 될 때 사용할 아티팩트의 버전을 직접 지정하십시오. 예를 들어 프로젝트 C는 B를 종속성 관리 섹션에 종속성으로 포함하고 참조 될 때 사용할 B 버전을 직접 제어 할 수 있습니다.

Dependency scope

빌드의 현재 단계에 따른 종속성을 포함합니다.

4

Excluded dependencies

전 이적 종속성은 "exclusion"요소를 사용하여 제외 할 수 있습니다. 예를 들어 A는 B에 종속되고 B는 C에 종속되며 A는 C를 제외됨으로 표시 할 수 있습니다.

5

Optional dependencies

전 이적 종속성은 "선택 사항"요소를 사용하여 선택 사항으로 표시 할 수 있습니다. 예를 들어 A는 B에 의존하고 B는 C에 의존합니다. 이제 B는 C를 선택 사항으로 표시했습니다. 그러면 A는 C를 사용하지 않습니다.

종속성 범위

Transitive Dependency Discovery는 아래와 같이 다양한 Dependency Scope를 사용하여 제한 할 수 있습니다.

Sr. 아니. 범위 및 설명
1

compile

이 범위는 프로젝트의 클래스 경로에서 종속성을 사용할 수 있음을 나타냅니다. 기본 범위입니다.

2

provided

이 범위는 런타임시 JDK 또는 웹 서버 / 컨테이너가 종속성을 제공함을 나타냅니다.

runtime

이 범위는 종속성이 컴파일에 필요하지 않지만 실행 중에 필요함을 나타냅니다.

4

test

이 범위는 종속성이 테스트 컴파일 및 실행 단계에서만 사용 가능함을 나타냅니다.

5

system

이 범위는 시스템 경로를 제공해야 함을 나타냅니다.

6

import

이 범위는 종속성이 pom 유형 인 경우에만 사용됩니다. 이 범위는 지정된 POM이 해당 POM의 <dependencyManagement> 섹션에있는 종속성으로 대체되어야 함을 나타냅니다.

종속성 관리

일반적으로 공통 프로젝트 아래에 일련의 프로젝트가 있습니다. 이 경우 모든 공통 종속성을 가진 공통 pom을 만든 다음이 pom을 하위 프로젝트 poms의 부모로 만들 수 있습니다. 다음 예는이 개념을 이해하는 데 도움이됩니다.

다음은 위의 종속성 그래프의 세부 사항입니다.

  • App-UI-WAR는 App-Core-lib 및 App-Data-lib에 따라 다릅니다.
  • Root는 App-Core-lib 및 App-Data-lib의 부모입니다.
  • 루트는 종속성 섹션에서 Lib1, lib2, Lib3을 종속성으로 정의합니다.

App-UI-WAR

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.groupname</groupId>
   <artifactId>App-UI-WAR</artifactId>
   <version>1.0</version>
   <packaging>war</packaging>
   <dependencies>
      <dependency>
         <groupId>com.companyname.groupname</groupId>
         <artifactId>App-Core-lib</artifactId>
         <version>1.0</version>
      </dependency>
   </dependencies>  
   <dependencies>
      <dependency>
         <groupId>com.companyname.groupname</groupId>
         <artifactId>App-Data-lib</artifactId>
         <version>1.0</version>
      </dependency>
   </dependencies>  
</project>

App-Core-lib

<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">
   <parent>
      <artifactId>Root</artifactId>
      <groupId>com.companyname.groupname</groupId>
      <version>1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.groupname</groupId>
   <artifactId>App-Core-lib</artifactId>
   <version>1.0</version> 
   <packaging>jar</packaging>
</project>

App-Data-lib

<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">
   <parent>
      <artifactId>Root</artifactId>
      <groupId>com.companyname.groupname</groupId>
      <version>1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.groupname</groupId>
   <artifactId>App-Data-lib</artifactId>
   <version>1.0</version>   
   <packaging>jar</packaging>
</project>

Root

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.groupname</groupId>
   <artifactId>Root</artifactId>
   <version>1.0</version>
   <packaging>pom</packaging>
   <dependencies>
      <dependency>
         <groupId>com.companyname.groupname1</groupId>
         <artifactId>Lib1</artifactId>
         <version>1.0</version>
      </dependency>
   </dependencies>  
   <dependencies>
      <dependency>
         <groupId>com.companyname.groupname2</groupId>
         <artifactId>Lib2</artifactId>
         <version>2.1</version>
      </dependency>
   </dependencies>  
   <dependencies>
      <dependency>
         <groupId>com.companyname.groupname3</groupId>
         <artifactId>Lib3</artifactId>
         <version>1.1</version>
      </dependency>
   </dependencies>  
</project>

이제 App-UI-WAR 프로젝트를 빌드 할 때 Maven은 종속성 그래프를 탐색하고 애플리케이션을 빌드하여 모든 종속성을 발견합니다.

위의 예에서 다음과 같은 주요 개념을 배울 수 있습니다.

  • 부모 pom의 개념을 사용하여 공통 종속성을 단일 위치에 배치 할 수 있습니다. 종속성App-Data-libApp-Core-lib프로젝트는 루트 프로젝트에 나열됩니다 ( 루트 의 패키징 유형 참조. POM입니다).

  • App-UI-WAR에서 Lib1, lib2, Lib3을 종속성으로 지정할 필요가 없습니다. Maven은Transitive Dependency Mechanism 이러한 세부 사항을 관리합니다.

프로젝트 개발에서 일반적으로 배포 프로세스는 다음 단계로 구성됩니다.

  • 진행중인 모든 프로젝트의 코드를 SVN (버전 제어 시스템) 또는 소스 코드 저장소에 체크인하고 태그를 지정합니다.

  • SVN에서 전체 소스 코드를 다운로드하십시오.

  • 애플리케이션을 빌드하십시오.

  • 빌드 출력을 WAR 또는 EAR 파일을 공통 네트워크 위치에 저장하십시오.

  • 네트워크에서 파일을 가져 와서 프로덕션 사이트에 배포합니다.

  • 응용 프로그램의 날짜 및 업데이트 된 버전 번호로 설명서를 업데이트했습니다.

문제 설명

위에서 언급 한 배포 프로세스에는 일반적으로 여러 사람이 참여합니다. 한 팀은 코드 체크인을 처리하고 다른 팀은 빌드 등을 처리 할 수 ​​있습니다. 수작업이 수반되고 다중 팀 환경으로 인해 모든 단계를 놓칠 수 있습니다. 예를 들어, 이전 빌드는 네트워크 머신에서 교체 할 수 없으며 배포 팀은 이전 빌드를 다시 배포했습니다.

해결책

다음을 결합하여 배포 프로세스를 자동화하십시오-

  • Maven, 프로젝트를 빌드하고 릴리스합니다.
  • 소스 코드를 관리하는 SubVersion, 소스 코드 저장소.
  • 프로젝트 바이너리를 관리하기위한 원격 저장소 관리자 (Jfrog / Nexus).

프로젝트 POM.xml 업데이트

Maven 릴리스 플러그인을 사용하여 자동화 된 릴리스 프로세스를 만들 것입니다.

예 : bus-core-api 프로젝트 POM.xml.

<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">
   <modelVersion>4.0.0</modelVersion>
   <groupId>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging> 
   <scm>
      <url>http://www.svn.com</url>
      <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework</connection>
      <developerConnection>scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code</developerConnection>
   </scm>
   <distributionManagement>
      <repository>
         <id>Core-API-Java-Release</id>
         <name>Release repository</name>
         <url>http://localhost:8081/nexus/content/repositories/
         Core-Api-Release</url>
      </repository>
   </distributionManagement>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0-beta-9</version>
            <configuration>
               <useReleaseProfile>false</useReleaseProfile>
               <goals>deploy</goals>
               <scmCommentPrefix>[bus-core-api-release-checkin]-<
               /scmCommentPrefix>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

Pom.xml에서 다음은 우리가 사용한 중요한 요소입니다.

Sr. 아니. 요소 및 설명
1

SCM

Maven이 소스 코드를 체크 아웃 할 SVN 위치를 구성합니다.

2

Repositories

빌드 된 WAR / EAR / JAR 또는 기타 아티팩트가 코드 빌드 성공 후 저장 될 위치입니다.

Plugin

maven-release-plugin은 배포 프로세스를 자동화하도록 구성됩니다.

Maven 릴리스 플러그인

Maven은 다음을 사용하여 다음과 같은 유용한 작업을 수행합니다. maven-release-plugin.

mvn release:clean

마지막 릴리스 프로세스가 성공하지 못한 경우 작업 공간을 정리합니다.

mvn release:rollback

마지막 릴리스 프로세스가 성공하지 못한 경우 작업 영역 코드 및 구성에 대한 변경 사항을 롤백합니다.

mvn release:prepare

다음과 같은 여러 작업을 수행합니다.

  • 커밋되지 않은 로컬 변경이 있는지 여부를 확인합니다.

  • SNAPSHOT 종속성이 없는지 확인합니다.

  • 애플리케이션의 버전을 변경하고 릴리스 할 버전에서 SNAPSHOT을 제거합니다.

  • pom 파일을 SVN으로 업데이트합니다.

  • 테스트 케이스를 실행하십시오.

  • 수정 된 POM 파일을 커밋합니다.

  • Subversion에서 코드에 태그 지정

  • 버전 번호를 늘리고 향후 릴리스를 위해 SNAPSHOT을 추가하십시오.

  • 수정 된 POM 파일을 SVN에 커밋합니다.

mvn release:perform

이전에 정의 된 태그를 사용하여 코드를 확인하고 Maven 배포 목표를 실행하여 전쟁 또는 빌드 된 아티팩트를 저장소에 배포합니다.

명령 콘솔을 열고 C:\ > MVN >bus-core-api 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

>mvn release:prepare

Maven이 프로젝트 빌드를 시작합니다. 빌드가 성공하면 다음을 실행하십시오.mvn 명령.

>mvn release:perform

빌드가 성공하면 저장소에 업로드 된 JAR 파일을 확인할 수 있습니다.

이 장에서는 다음을 사용하여 웹 기반 프로젝트를 관리하는 방법을 설명합니다. Maven. 여기서는 웹 애플리케이션을 생성 / 빌드 / 배포하고 실행하는 방법을 배웁니다.

웹 애플리케이션 생성

간단한 자바 웹 애플리케이션을 생성하기 위해 maven-archetype-webapp플러그인. 이제 명령 콘솔을 열고C:\MVN 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

C:\MVN>mvn archetype:generate 
-DgroupId = com.companyname.automobile 
-DartifactId = trucks
-DarchetypeArtifactId = maven-archetype-webapp 
-DinteractiveMode = false

Maven은 처리를 시작하고 다음과 같이 완전한 웹 기반 자바 애플리케이션 프로젝트 구조를 생성합니다.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] -------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Batch mode
[INFO] --------------------------------------------------------------------
[INFO] Using following parameters for creating project
from Old (1.x) Archetype: maven-archetype-webapp:1.0
[INFO] --------------------------------------------------------------------

[INFO] Parameter: groupId, Value: com.companyname.automobile
[INFO] Parameter: packageName, Value: com.companyname.automobile
[INFO] Parameter: package, Value: com.companyname.automobile
[INFO] Parameter: artifactId, Value: trucks
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\trucks

[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

[INFO] Total time: 16 seconds
[INFO] Finished at: Tue Jul 17 11:00:00 IST 2012
[INFO] Final Memory: 20M/89M
[INFO] -------------------------------------------------------------------

이제 C : / MVN 디렉토리로 이동합니다. 다음 스냅 샷에 지정된대로 trucks (artifactId에 지정된대로)라는 이름의 Java 애플리케이션 프로젝트가 생성 된 것을 볼 수 있습니다. 다음 디렉토리 구조는 일반적으로 웹 애플리케이션에 사용됩니다.

Maven은 표준 디렉토리 레이아웃을 사용합니다. 위의 예를 사용하여 다음과 같은 주요 개념을 이해할 수 있습니다.

Sr. 아니. 폴더 구조 및 설명
1

trucks

src 폴더와 pom.xml을 포함합니다.

2

src/main/webapp

index.jsp 및 WEB-INF 폴더가 포함되어 있습니다.

src/main/webapp/WEB-INF

web.xml 포함

4

src/main/resources

이미지 / 속성 파일이 포함되어 있습니다.

POM.xml

<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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.automobile</groupId>
   <artifactId>trucks</artifactId>
   <packaging>war</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>trucks Maven Webapp</name>
   <url>http://maven.apache.org</url>
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
       </dependency>
   </dependencies>
   <build>
      <finalName>trucks</finalName>
   </build>
</project>

관찰하면 Maven도 샘플 JSP 소스 파일을 생성했음을 알 수 있습니다.

열다 C:\ > MVN > trucks > src > main > webapp > 다음 코드로 index.jsp를 볼 폴더-

<html>
   <body>
      <h2>Hello World!</h2>
   </body>
</html>

웹 애플리케이션 구축

명령 콘솔을 열고 C : \ MVN \ trucks 디렉토리로 이동하여 다음을 실행 해 보겠습니다. mvn 명령.

C:\MVN\trucks>mvn clean package

Maven이 프로젝트 빌드를 시작합니다.

[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------
[INFO] Building trucks Maven Webapp
[INFO] task-segment: [clean, package]
[INFO] -------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to
copy filtered resources,i.e. build is platform dependent!

[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] No sources to compile
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to
copy filtered resources,i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory
C:\MVN\trucks\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] No sources to compile
[INFO] [surefire:test {execution: default-test}]
[INFO] No tests to run.
[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] Assembling webapp[trucks] in [C:\MVN\trucks\target\trucks]
[INFO] Processing war project
[INFO] Copying webapp resources[C:\MVN\trucks\src\main\webapp]
[INFO] Webapp assembled in[77 msecs]
[INFO] Building war: C:\MVN\trucks\target\trucks.war
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Tue Jul 17 11:22:45 IST 2012
[INFO] Final Memory: 11M/85M
[INFO] -------------------------------------------------------------------

웹 애플리케이션 배포

이제 복사 trucks.war 생성 C:\ > MVN > trucks > target > 웹 서버 webapp 디렉토리에 폴더를 추가하고 웹 서버를 다시 시작하십시오.

웹 애플리케이션 테스트

URL을 사용하여 웹 애플리케이션을 실행하십시오. http://<server-name>:<port-number>/trucks/index.jsp.

출력을 확인하십시오.

Eclipse는 Maven과 Eclipse를 원활하게 통합 하는 우수한 플러그인 m2eclipse 를 제공합니다 .

m2eclipse의 일부 기능은 다음과 같습니다.

  • Eclipse에서 Maven 목표를 실행할 수 있습니다.

  • 자체 콘솔을 사용하여 Eclipse 내에서 Maven 명령의 출력을 볼 수 있습니다.

  • IDE로 maven 종속성을 업데이트 할 수 있습니다.

  • Eclipse 내에서 Maven 빌드를 시작할 수 있습니다.

  • Maven의 pom.xml을 기반으로 Eclipse 빌드 경로에 대한 종속성 관리를 수행합니다.

  • 로컬 Maven 저장소에 설치하지 않고 Eclipse 작업 공간에서 Maven 종속성을 해결합니다 (종속성 프로젝트가 동일한 작업 공간에 있어야 함).

  • 원격 Maven 저장소에서 필요한 종속성과 소스를 자동으로 다운로드합니다.

  • 새로운 Maven 프로젝트, pom.xml을 생성하고 기존 프로젝트에서 Maven 지원을 활성화하기위한 마법사를 제공합니다.

  • 원격 Maven 저장소에서 종속성에 대한 빠른 검색을 제공합니다.

m2eclipse 플러그인 설치

다음 링크 중 하나를 사용하여 m2eclipse를 설치하십시오.

URL
Eclipse 3.5 (Gallileo)

Eclipse 3.5 (Gallileo)에 m2eclipse 설치

Eclipse 3.6 (Helios)

Eclipse 3.6 (Helios)에 m2eclipse 설치

다음 예제는 Eclipse와 Maven 통합의 이점을 활용하는 데 도움이됩니다.

Eclipse에서 Maven 프로젝트 가져 오기

  • Eclipse를 엽니 다.

  • 고르다 File > Import > 선택권.

  • Maven 프로젝트 옵션을 선택합니다. 다음 버튼을 클릭하십시오.

  • Maven을 사용하여 프로젝트가 생성 된 프로젝트 위치를 선택합니다. 이전 장에서 Java Project Consumer Banking을 만들었습니다. Maven을 사용하여 프로젝트를 생성하는 방법을 보려면 'Creating Java Project'장으로 이동하십시오.

  • 마침 버튼을 클릭합니다.

이제 eclipse에서 maven 프로젝트를 볼 수 있습니다.

자, 한번보세요 consumer Banking프로젝트 속성. Eclipse가 Java 빌드 경로에 Maven 종속성을 추가했음을 알 수 있습니다.

이제 eclipse의 maven 기능을 사용하여이 프로젝트를 빌드 할 때입니다.

  • consumerBanking 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니 다.
  • 다음으로 실행 옵션을 선택하십시오.
  • 그런 다음 maven 패키지 옵션.

Maven이 프로젝트 빌드를 시작합니다. 다음과 같이 Eclipse 콘솔에서 출력을 볼 수 있습니다.

[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------
[INFO] Building consumerBanking
[INFO]
[INFO] Id: com.companyname.bank:consumerBanking:jar:1.0-SNAPSHOT
[INFO] task-segment: [package]
[INFO] -------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test]
[INFO] Surefire report directory:
C:\MVN\consumerBanking\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------

Running com.companyname.bank.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]

[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

[INFO] Total time: 1 second
[INFO] Finished at: Thu Jul 12 18:18:24 IST 2012
[INFO] Final Memory: 2M/15M
[INFO] -------------------------------------------------------------------

이제 App.java를 마우스 오른쪽 버튼으로 클릭하십시오. 고르다Run As선택권. 그런 다음Java Application.

다음과 같은 결과를 볼 수 있습니다.

Hello World!

NetBeans 6.7 이상은 Maven을 기본적으로 지원합니다. 이전 버전의 경우 플러그인 관리자에서 Maven 플러그인을 사용할 수 있습니다. 이 예제에서는 NetBeans 6.9를 사용하고 있습니다.

NetBeans의 일부 기능은 다음과 같습니다.

  • NetBeans에서 Maven 목표를 실행할 수 있습니다.

  • 자체 콘솔을 사용하여 NetBeans 내에서 Maven 명령의 출력을 볼 수 있습니다.

  • IDE로 maven 종속성을 업데이트 할 수 있습니다.

  • NetBeans 내에서 Maven 빌드를 시작할 수 있습니다.

  • NetBeans는 Maven의 pom.xml을 기반으로 종속성 관리를 자동으로 수행합니다.

  • NetBeans는 로컬 Maven 저장소에 설치하지 않고 작업 공간에서 Maven 종속성을 해결합니다 (종속성 프로젝트가 동일한 작업 공간에 있어야 함).

  • NetBeans는 원격 Maven 저장소에서 필요한 종속성 및 소스를 자동으로 다운로드합니다.

  • NetBeans는 새로운 Maven 프로젝트 인 pom.xml을 생성하기위한 마법사를 제공합니다.

  • NetBeans는 로컬 리포지토리와 등록 된 외부 Maven 리포지토리를 볼 수있는 Maven 리포지토리 브라우저를 제공합니다.

다음 예제는 NetBeans 및 Maven 통합의 이점을 활용하는 데 도움이됩니다.

NetBeans에서 Maven 프로젝트 열기

  • NetBeans를 엽니 다.

  • 고르다 File Menu > Open Project 선택권.

  • Maven을 사용하여 프로젝트가 생성 된 프로젝트 위치를 선택합니다. Java 프로젝트 consumerBanking을 만들었습니다. Maven을 사용하여 프로젝트를 생성하는 방법을 보려면 'Creating Java Project'장으로 이동하십시오.

이제 NetBeans에서 maven 프로젝트를 볼 수 있습니다. consumerBanking 프로젝트 라이브러리 및 테스트 라이브러리를 살펴보십시오. NetBeans가 빌드 경로에 Maven 종속성을 추가했음을 알 수 있습니다.

NetBeans에서 Maven 프로젝트 빌드

이제 NetBeans의 maven 기능을 사용하여이 프로젝트를 빌드 할 때입니다.

  • consumerBanking 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니 다.
  • 옵션으로 정리 및 빌드를 선택하십시오.

Maven이 프로젝트 빌드를 시작합니다. 다음과 같이 NetBeans 콘솔에서 출력을 볼 수 있습니다.

NetBeans: Executing 'mvn.bat -Dnetbeans.execution = true clean install'
NetBeans:      JAVA_HOME = C:\Program Files\Java\jdk1.6.0_21
Scanning for projects...
------------------------------------------------------------------------
Building consumerBanking
   task-segment: [clean, install]
------------------------------------------------------------------------
[clean:clean]
[resources:resources]
[WARNING] Using platform encoding (Cp1252 actually)
to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory C:\MVN\consumerBanking\src\main\resources
[compiler:compile]
Compiling 2 source files to C:\MVN\consumerBanking\target\classes
[resources:testResources]
[WARNING] Using platform encoding (Cp1252 actually)
to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory C:\MVN\consumerBanking\src\test\resources
[compiler:testCompile]
Compiling 1 source file to C:\MVN\consumerBanking\target\test-classes
[surefire:test]
Surefire report directory: C:\MVN\consumerBanking\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.companyname.bank.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[jar:jar]
Building jar: C:\MVN\consumerBanking\target\consumerBanking-1.0-SNAPSHOT.jar
[install:install]
Installing C:\MVN\consumerBanking\target\consumerBanking-1.0-SNAPSHOT.jar
to C:\Users\GB3824\.m2\repository\com\companyname\bank\consumerBanking\
1.0-SNAPSHOT\consumerBanking-1.0-SNAPSHOT.jar
------------------------------------------------------------------------
BUILD SUCCESSFUL
------------------------------------------------------------------------
Total time: 9 seconds
Finished at: Thu Jul 19 12:57:28 IST 2012
Final Memory: 16M/85M
------------------------------------------------------------------------

NetBeans에서 응용 프로그램 실행

이제 App.java를 마우스 오른쪽 버튼으로 클릭하십시오. 고르다Run File옵션으로. NetBeans 콘솔에 결과가 표시됩니다.

NetBeans: Executing 'mvn.bat -Dexec.classpathScope = runtime 
-Dexec.args = -classpath %classpath com.companyname.bank.App 
-Dexec.executable = C:\Program Files\Java\jdk1.6.0_21\bin\java.exe 
-Dnetbeans.execution = true process-classes 
org.codehaus.mojo:exec-maven-plugin:1.1.1:exec'
NetBeans:      JAVA_HOME = C:\Program Files\Java\jdk1.6.0_21
Scanning for projects...
------------------------------------------------------------------------
Building consumerBanking
   task-segment: [process-classes, 
   org.codehaus.mojo:exec-maven-plugin:1.1.1:exec]
------------------------------------------------------------------------
[resources:resources]
[WARNING] Using platform encoding (Cp1252 actually) 
to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory C:\MVN\consumerBanking\src\main\resources
[compiler:compile]
Nothing to compile - all classes are up to date
[exec:exec]
Hello World!
------------------------------------------------------------------------
BUILD SUCCESSFUL
------------------------------------------------------------------------
Total time: 1 second
Finished at: Thu Jul 19 14:18:13 IST 2012
Final Memory: 7M/64M
------------------------------------------------------------------------

IntelliJ IDEA는 Maven을 기본적으로 지원합니다. 이 예에서는 IntelliJ IDEA Community Edition 11.1을 사용하고 있습니다.

IntelliJ IDEA의 일부 기능은 다음과 같습니다.

  • IntelliJ IDEA에서 Maven 목표를 실행할 수 있습니다.

  • 자체 콘솔을 사용하여 IntelliJ IDEA 내에서 Maven 명령의 출력을 볼 수 있습니다.

  • IDE 내에서 Maven 종속성을 업데이트 할 수 있습니다.

  • IntelliJ IDEA 내에서 Maven 빌드를 시작할 수 있습니다.

  • IntelliJ IDEA는 Maven의 pom.xml을 기반으로 종속성 관리를 자동으로 수행합니다.

  • IntelliJ IDEA는 로컬 Maven 저장소에 설치하지 않고 작업 공간에서 Maven 종속성을 해결합니다 (종속성 프로젝트가 동일한 작업 공간에 있어야 함).

  • IntelliJ IDEA는 원격 Maven 저장소에서 필요한 종속성과 소스를 자동으로 다운로드합니다.

  • IntelliJ IDEA는 새 Maven 프로젝트 인 pom.xml을 만들기위한 마법사를 제공합니다.

다음 예제는 IntelliJ IDEA 및 Maven 통합의 이점을 활용하는 데 도움이됩니다.

IntelliJ IDEA에서 새 프로젝트 만들기

New Project Wizard를 사용하여 Maven 프로젝트를 가져옵니다.

  • IntelliJ IDEA를 엽니 다.

  • 고르다 File Menu > New Project 선택권.

  • 기존 모델에서 가져 오기 프로젝트를 선택합니다.

  • Maven 옵션 선택
  • Maven을 사용하여 프로젝트가 생성 된 프로젝트 위치를 선택합니다. Java 프로젝트 consumerBanking을 만들었습니다. Maven을 사용하여 프로젝트를 생성하는 방법을 보려면 'Creating Java Project'장으로 이동하십시오.

  • 가져올 Maven 프로젝트를 선택합니다.
  • 프로젝트 이름을 입력하고 마침을 클릭합니다.
  • 이제 IntelliJ IDEA에서 maven 프로젝트를 볼 수 있습니다. consumerBanking 프로젝트 외부 라이브러리를 살펴보십시오. IntelliJ IDEA가 Maven 섹션의 빌드 경로에 Maven 종속성을 추가했음을 알 수 있습니다.

IntelliJ IDEA에서 Maven 프로젝트 빌드

이제 IntelliJ IDEA의 기능을 사용하여이 프로젝트를 빌드 할 때입니다.

  • consumerBanking 프로젝트를 선택합니다.

  • 고르다 Buid menu > Rebuild Project 선택권

IntelliJ IDEA 콘솔에서 출력을 볼 수 있습니다.

4:01:56 PM Compilation completed successfully

IntelliJ IDEA에서 응용 프로그램 실행

  • consumerBanking 프로젝트를 선택합니다.

  • App.java를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니 다.

  • 고르다 Run App.main()

IntelliJ IDEA 콘솔에 결과가 표시됩니다.

"C:\Program Files\Java\jdk1.6.0_21\bin\java"
-Didea.launcher.port=7533 
"-Didea.launcher.bin.path=
C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 11.1.2\bin"
-Dfile.encoding=UTF-8 
-classpath "C:\Program Files\Java\jdk1.6.0_21\jre\lib\charsets.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\deploy.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\javaws.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\jce.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\jsse.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\management-agent.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\plugin.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\resources.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\rt.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\dnsns.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\localedata.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunjce_provider.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunmscapi.jar;
C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunpkcs11.jar

C:\MVN\consumerBanking\target\classes;
C:\Program Files\JetBrains\
IntelliJ IDEA Community Edition 11.1.2\lib\idea_rt.jar" 
com.intellij.rt.execution.application.AppMain com.companyname.bank.App
Hello World!

Process finished with exit code 0