프로젝트 설명 개체 모델

Maven이 처음에 표준화한 것 중 하나는 프로젝트 설명이었습니다. Maven 이전에는 각 IDE에 고유한 프로젝트 파일이 있었는데, 여기에는 프로젝트 및 해당 어셈블리에 대한 정보(종종 이진 형식)가 저장되었습니다.

Maven은 다양한 태그를 사용하여 프로젝트가 무엇인지, 빌드 방법 및 종속성이 무엇인지 설명하는 XML 기반의 범용 개방형 표준을 제시했습니다. 프로젝트 설명은 일반적으로 pom.xml 이라는 단일 파일에 포함됩니다 .

예제 pom.xml 파일 :

<?xml 버전="1.0" 인코딩="UTF-8"?>
<프로젝트 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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <종속성> <
       종속성>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <버전>2.6</버전>
        </종속성>
   </종속성>


</프로젝트>

이 예에는 다음 세 가지가 기록되어 있습니다.

  • maven 프로젝트 표준의 버전에 대한 정보는 파란색입니다.
  • 프로젝트 자체에 대한 정보는 빨간색입니다.
  • 사용된 라이브러리에 대한 정보는 녹색입니다.

pom 파일 장치에 대해 자세히 살펴보겠습니다.

메이븐 프로젝트 구조

그리고 즉시 질문은 다음과 같습니다. 마지막 예에서 이상한 점에 주의를 기울였습니까? 프로젝트 코드 자체에 대한 정보는 포함하지 않습니다! Java 파일, 리소스, 속성 파일, html, 빌드 스크립트 등이 저장되는 위치에 대한 단어가 없습니다.

대답은 간단합니다. Maven은 프로젝트 디자인을 표준화했습니다. 프로젝트 내에서 코드를 구성하는 몇 가지 옵션이 있으며 가장 일반적인 옵션은 다음과 같습니다.

이 구조는 표준 IDEA 프로젝트 이후에는 약간 특이하지만 보편적입니다. 일상에서 접하게 될 프로젝트의 90%가 이 폴더 구조를 가질 것입니다 .

Maven 프로젝트를 생성하면(IDEA를 사용하거나 콘솔을 사용하여) 지정된 형식을 취합니다. 여기에서 모든 것이 어떻게 작동하는지 봅시다.

짐작하셨겠지만 src 폴더에는 프로젝트의 소스 코드가 포함되어 있습니다. 여기에는 두 개의 하위 폴더가 있습니다: maintest .

/src/main/java 폴더는 프로젝트에 있는 모든 Java 클래스의 루트입니다. com.codegym.Cat 클래스가 있는 경우 /src/main/java /com/codegym /Cat.java 폴더 에 있습니다 . 텍스트 또는 바이너리 리소스가 있는 경우 /src/main/resources 폴더에 저장해야 합니다 .

/src/test 폴더 의 구조는 /src/main 폴더 의 구조와 유사 하지만 테스트와 해당 리소스를 포함합니다. Maven 자체는 프로젝트를 빌드할 때 필요한 테스트를 실행하는 방법을 알고 있지만 이에 대해서는 별도의 강의에서 이야기하겠습니다.

프로젝트에 /target 폴더도 있으며 Maven은 프로젝트가 빌드된 후 프로젝트를 저장합니다. 대규모 프로젝트에는 중요한 빌드 스크립트가 있는 경우가 많기 때문에 이 폴더에는 아무 것도 저장되지 않습니다.

/target 폴더 의 두 번째 목적은 중간 빌드 결과를 캐시하는 것입니다. 대규모 프로젝트를 빌드할 때 Maven은 변경된 부분만 다시 빌드할 수 있으므로 빌드 시간이 몇 배 빨라집니다.

글쎄, 케이크의 체리처럼 - 프로젝트의 맨 루트에는 pom.xml 파일이 있습니다. 여기에는 아래에서 논의할 프로젝트에 대한 모든 필수 정보가 포함되어 있습니다.

장치 pom.xml

우선 pom 파일은 xml이므로 표준 헤더 및 네임스페이스 정보를 포함합니다. 이것은 순전히 XML 표준에 관한 것이므로 자세한 내용은 다루지 않겠습니다. 이것은 다음을 의미합니다.

<?xml 버전="1.0" 인코딩="UTF-8"?>
<프로젝트 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">

        …

</프로젝트>

또한 일반적으로 <project> 태그 내부의 첫 번째 줄은 pom-file 표준 버전에 대한 설명입니다. 거의 항상 4.0입니다. 이것 역시 우리에게 관심이 없습니다.

관심 있는 첫 번째 줄은 다음과 같습니다.

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

우리가 Maven 표준에서 설명하는 것(프로그램, 프로젝트, 모듈, 라이브러리 등)을 다시 한 번 이해하지 않기 위해 이것을 모두 아티팩트 라는 단어라고 합니다 . Maven 제작자를 거부할 수 없는 것은 표준화에 대한 사랑입니다.

표시되는 세 개의 태그는 다음을 의미합니다.

  • groupId - 도메인 이름이 추가된 애플리케이션이 속한 패키지.
  • artifactId – 고유한 문자열 키(프로젝트 ID)
  • 버전 - 프로젝트의 버전.

이 세 가지 매개변수는 모든 아티팩트를 명확하게 설명하기 에 충분합니다 .

또한 프로젝트 설명 뒤에는 일반적으로 프로젝트에서 사용하는 아티팩트(라이브러리) 목록이 있습니다. 다음과 같이 보입니다.

   <종속성>

       <종속성>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version> </
       종속성> </종속성

   >

이 예에서는 commons-io 패키지 버전 2.6의 commons-io 라이브러리를 프로젝트에 추가합니다.

빌드 시 Maven은 글로벌 저장소에서 이러한 라이브러리를 찾아 프로젝트에 추가합니다. 그건 그렇고, Maven만이 이것을 할 수 있는 것은 아닙니다.

IDEA가 Maven과 작동하는 방식

Intellij IDEA는 Maven과 함께 작업하는 데 탁월합니다. 그녀는 이러한 프로젝트를 열고, 직접 만들고, 다양한 빌드 스크립트를 실행하고, 포함된 라이브러리를 완벽하게 이해하는 방법을 알고 있습니다.

한동안 자체 내장 Maven도 있었지만 여전히 직접 설치하고 구성할 수 있어야 하므로 IDEA의 이 기능은 앞에서 언급하지 않았습니다. 이론적으로 IDEA는 두 Maven 간에 충돌이 있을 수 있으므로 두 가지가 있다는 것을 알아 두는 것이 좋습니다.

IDEA에서 새 Maven 프로젝트를 만드는 방법:

파일 > 새 프로젝트 메뉴를 클릭합니다. 왼쪽에서 메뉴 항목 새 프로젝트를 선택합니다 .

메이븐 프로젝트

몇 가지 사항을 명확히 합시다.

  1. 프로젝트 이름;
  2. 프로젝트 폴더;
  3. 프로젝트 언어는 Java입니다.
  4. 프로젝트 유형은 Maven입니다.

하단의 고급 설정 섹션에서 IDEA는 새 프로젝트의 goupID, artifactID 및 버전을 지정하라는 메시지를 표시합니다. 이 데이터는 나중에 언제든지 쉽게 변경할 수 있습니다. 제안된 것 중에서 선택하거나 직접 입력하십시오.

메이븐 프로젝트 2

다음으로 필요한 위치에 프로젝트를 표준으로 생성합니다. 결과적으로 다음과 같은 구조를 볼 수 있습니다.

메이븐 프로젝트 3

클래스와 패키지는 java 폴더에 생성되어야 합니다. 이에 대해서는 이미 이야기했습니다. 그리고 나는 당신이 그것을 쉽게 처리할 수 있다고 생각합니다. 계속 진행할 준비가 되었지만 조금 "건너뛴" 중요한 문제로 돌아가 보겠습니다.