초보자를 위한 5가지 흥미로운 Maven 다중 모듈 프로젝트 아이디어 및 주제 [2022]

게시 됨: 2021-05-27

모든 프로젝트가 더 복잡해지고 계층화됨에 따라 프로젝트를 관리하는 올바른 방법은 프로젝트를 여러 모듈로 분할하는 것입니다. Maven에서는 이러한 여러 프로젝트를 종속성으로 연결할 수 있지만 빌드 프로세스가 훨씬 더 복잡해집니다. 따라서 선호하는 접근 방식은 프로젝트를 다중 모듈식으로 구성하고 나머지는 Maven에 전달하는 것입니다.

목차

Maven에서 다중 모듈 사용의 이점

종속성 주입이나 다른 절차 대신 다중 모듈을 사용하는 경우의 중요한 이점은 중복을 줄일 수 있다는 것입니다. 이를 더 잘 이해하기 위해 백엔드 모듈과 프론트엔드 모듈이라는 두 개의 모듈로 구성된 애플리케이션에서 작업하고 있다고 가정합니다.

두 모듈에서 작업하고 두 모듈에 모두 영향을 주는 특정 기능을 변경하는 경우 특수 빌드 도구 없이 모듈 또는 구성 요소를 모두 별도로 빌드해야 합니다. 또는 코드를 컴파일하고 테스트를 실행하고 최종 결과를 표시하는 스크립트를 작성해야 합니다.

이제 복잡성이 더욱 증가하고 프로젝트에 2개 이상의 모듈이 있는 경우 특수 빌드 도구 없이 이 작업을 수행하는 것이 점점 더 어려워질 것입니다. 또한 실제 문제에서 프로젝트는 전체 빌드 수명 주기 동안 몇 가지 중요한 작업을 수행하거나 종속성을 공유하거나 다른 BOM 프로젝트를 포함하기 위해 일부 Maven 플러그인이 필요할 수 있습니다.

이러한 문제의 결과로 Maven의 다중 모듈은 매우 유용하며 단일 명령줄에서 응용 프로그램의 모듈을 빌드할 수 있습니다. 또한 여러 모듈 간에 방대한 양의 데이터와 구성을 원활하게 공유할 수 있습니다.

또한 읽기: Maven 인터뷰 질문 답변

Maven의 다중 모듈 프로젝트와 관련하여 알아야 할 주요 용어

1. 상위 POM(프로젝트 개체 모듈)

상속 지원을 위해 Maven의 각 pom.xml 파일에는 Super POM이라고 하는 상위 POM이 있습니다. 이것은 Maven 바이너리에 있을 수 있으며 두 파일을 병합하여 유효 POM을 만들 수도 있습니다.

따라서 프로젝트의 부모 역할을 하는 고유한 pom.xml 파일을 만들 수 있습니다. 완료되면 모든 종속성과 구성을 추가하고 이를 하위 모듈의 상위로 설정하고 상속을 활성화할 수 있습니다. Maven은 상속을 제외하고 집계도 제공합니다. 집계 기능을 활용하는 상위 POM을 집계 POM이라고 합니다. 이러한 종류의 POM은 pom.xml 파일에서 하위 모듈을 명시적으로 선언합니다.

2. 서브모듈

하위 모듈이라고도 하는 하위 프로젝트는 상위 POM에서 상속되는 표준 Maven 모듈로 이해할 수 있습니다. 상속을 사용하여 모듈은 다양한 종속성과 구성을 공유합니다. 그러나 프로젝트를 빠르게 빌드해야 하는 경우 상위 POM에서 하위 모듈을 명시적으로 선언하여 이를 집계 POM으로 만들어야 합니다.

3. 간단한 다중 모듈 프로젝트

App과 util은 The Simple Multi-Module Project에 포함된 두 개의 모듈입니다. util 모듈은 Apache Commons Lang 라이브러리를 사용하여 다른 문자열을 결합하거나 추가하는 정적 메서드를 제공하는 데 필요하고 app 모듈은 util 모듈을 호출하는 데 필요합니다. 다음은 app.java 파일의 스니펫입니다.

심플멀티/앱/src/main/java/app/App.java

공개 수업 앱 {

공개 정적 무효 메인(문자열[] 인수) {

System.out.println(new App().greet("세계!"));

}

공개 문자열 인사(문자열 이름) {

return Util.join("안녕하세요", 이름);

}

}

프로젝트를 빌드하려면 다음을 실행하십시오.

$ cd 심플 멀티

$ mvn 클린 테스트

Maven의 코드 빌더는 프로젝트의 두 모듈을 올바른 순서로 빌드하고, 필요한 테스트를 수행하고, 아래와 같이 쉽게 이해할 수 있는 요약 형식으로 결과를 출력합니다.

4. 다중 모듈 프로젝트의 구조

다음은 간단한 다중 모듈 프로젝트의 레이아웃입니다.

simple-multi 디렉토리는 루트 디렉토리이며 전체 프로젝트의 맨 위에 있습니다. 여기에는 최상위 POM(Parent POM)이 포함되어 있지만 이 Parent POM에는 소스 폴더가 없습니다.

최상위 디렉토리에는 디렉토리와 pom.xml 파일이 있는 일반 Maven 프로젝트인 app 및 util도 포함됩니다.

최상위 POM과 모듈 POM은 일반 POM과 약간 다릅니다. 어떤 내용을 담고 있는지 자세히 살펴보겠습니다.

5. 최상위 POM

상위 POM 또는 최상위 POM은 루트 디렉토리의 Maven 다중 모듈 프로젝트에 필요합니다.

최상위 POM은 일반 프로젝트에서와 같이 artifactID, 버전 및 groupID와 같은 중요한 측면과 프로젝트 좌표를 정의합니다. 그러나 이에 대한 포장 유형은 일반적인 war 또는 jar 형식이 아니라 pom입니다. 최상위 모듈에 더 이상 소스 디렉토리가 포함되어 있지 않기 때문입니다. 모듈/모듈 요소는 앱 및 유틸리티 모듈을 추가합니다.

이 파일의 내용은 다음과 같습니다.

심플멀티/pom.xml

<프로젝트 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>org.codetab</groupId>

<artifactId>단순 다중</artifactId>

<버전>1.0</버전>

<packaging>폼</packaging>

<모듈>

<모듈>앱</모듈>

<모듈>유틸</module>

</모듈>

</프로젝트>

요약하자면 최상위 POM은 pom 패키징 유형을 지정하고 모든 하위 모듈을 명시적으로 나열합니다.

Maven은 나열된 모듈을 올바르게 정렬하기 위해 Reactor를 사용하므로 상위 POM에서 하위 모듈을 선언하는 동안 순서에 대해 걱정할 필요가 없습니다. Simple-multi에서 maven은 util 모듈을 빌드한 다음 앱이 util에 의존하기 때문에 앱을 빌드합니다.

5. 모듈 POM

Module POM 폴더에는 일반 소스 폴더와 자체 pom.xml 파일이 있습니다. 이 util/pom.xml의 내용은 다음과 같습니다.

유틸리티/pom.xml

<프로젝트 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>org.codetab</groupId>

<artifactId>단순 다중</artifactId>

<버전>1.0</버전>

</부모>

<artifactId>유틸</artifactId>

<속성>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</속성>

<종속성>

<의존성>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<버전>3.6</버전>

</종속성>

<의존성>

<groupId>주단위</groupId>

<artifactId>주니트</artifactId>

<버전>4.12</버전>

<scope>테스트</scope>

</종속성>

</종속성>

</프로젝트>

부모로부터 상속되기 때문에 모듈에 대한 groupID 및 버전을 지정할 필요가 없습니다. 종속성/종속성 블록은 util 모듈 - commons-lang3 및 JUnit의 종속성을 정의합니다.

이제 아래 표시된 종속성 블록을 제외하고는 util/pom.xml과 매우 유사한 app/pom.xml을 살펴보겠습니다.

앱/pom.xml

<종속성>

<의존성>

<groupId>org.codetab</groupId>

<artifactId>유틸</artifactId>

<버전>1.0</버전>

</종속성>

</종속성>

app 모듈은 util 모듈의 메소드를 사용하며, 이를 위해 app/pom.xml은 util을 종속성으로 지정합니다.

위에서 설명한 모든 내용을 요약하면 다음과 같습니다.

최상위 프로젝트(상위 프로젝트),

  • 모든 좌표와 하위 모듈을 지정하는 최상위 pom.xml을 정의하고 패키징 유형을 pom으로 설정합니다.
  • 추가 모듈 폴더를 포함합니다.
  • 소스 폴더가 없습니다.

각 모듈 폴더는 일반 Maven 프로젝트 디렉토리일 뿐입니다. 그러나 pom.xml 파일에는 다음이 포함됩니다.

  • 부모 요소는 모듈의 부모를 지정합니다.
  • 모듈 좌표는 artifactID 요소에 지정됩니다. GroupID 및 버전은 상위 좌표에서 상속되므로 언급되지 않습니다.
  • 한 모듈이 다른 모듈에 종속되는 경우 종속성은 종속성/종속성 요소에 언급됩니다.

다중 모듈 프로젝트 실행

$ mvn clean package 명령어는 다중 모듈을 컴파일, 테스트, 패키징하는 데 사용할 수 있습니다. 그러나 maven-exec-plugin으로 실행하려면 다음 단계가 필요합니다.

다음 명령을 실행합니다.

$ cd 심플 멀티

$ mvn 클린 설치

$ mvn exec:java -pl 앱 -Dexec.mainClass=app.App

install 명령은 프로젝트를 실행할 수 있는 로컬 저장소에 모듈을 설치합니다. -pl 앱 옵션은 exec 플러그인에 앱 모듈에 대해 알리고 해당 클래스 app.App을 실행합니다. 설치하지 않으면 Maven이 util 모듈 종속성을 다운로드하고 해결할 수 없으므로 빌드 프로세스가 실패합니다.

그러나, 특히 개발 단계에서 실행하기 전에 매번 로컬 저장소에 프로젝트를 설치하는 것은 상당히 번거로운 일입니다. 이를 쉽게 하기 위해 설치 단계를 수행하지 않고 Eclipse IDE에서 다중 모듈을 직접 실행할 수 있습니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

이 기사가 Maven 다중 모듈 프로세스를 시작하는 데 도움이 되었기를 바랍니다. 모든 새로운 것이 그렇듯이, 그것은 단지 그것의 초기 걸림돌에 관한 것입니다. 기본 구조와 기능을 이해하고 나면 Maven에서 여러 모듈을 원활하게 관리할 수 있습니다.

전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 소프트웨어 개발 이그 제 큐 티브 PG 프로그램 - 전문가를 위해 설계되었으며 500 시간 이상의 엄격한 교육을 제공하는 전체 스택 개발 전문화를 확인하십시오. 9 + 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

다중 모듈 프로젝트란 무엇입니까?

다중 모듈을 사용하면 프로젝트를 빌드하고 배포하는 데 필요한 모듈 수를 줄이기 위해 공통 아티팩트를 단일 모듈로 그룹화할 수 있습니다. 다중 모듈 프로젝트는 이러한 모듈 간의 부모-자식 관계를 정의하여 둘 이상의 모듈로 구성할 수 있습니다. 다중 모듈 프로젝트의 상위 모듈을 루트 모듈이라고 합니다. 다중 모듈 프로젝트의 하위 모듈을 하위 모듈이라고 합니다. 루트 모듈은 다중 모듈 빌드의 초석입니다. 자식 모듈은 자체적으로 빌드할 수 없으며 루트 모듈과 함께 빌드해야 합니다.

maven에서 프로젝트 객체 모델 파일이란 무엇입니까?

POM(Project Object Model) 파일은 프로젝트를 설명하는 파일입니다. 개발자가 리포지토리에 아티팩트를 게시하는 기본 작업 단위입니다. 프로젝트 개체 모델은 프로젝트를 정의하고 해당 구성 요소를 나열하며 수행하는 작업을 정의하는 간단한 텍스트 파일입니다. 프로젝트 개체 모델은 Maven 소프트웨어 프로젝트 관리 프레임워크의 핵심 구성 요소입니다. Maven 프로젝트를 구성하는 특수한 형태의 XML 문서이다. pom 파일은 프로젝트에 대한 설명으로 생각할 수 있습니다. Maven에 프로젝트에 대한 내용과 프로젝트의 각 모듈, 해당 종속성 및 버전에 대한 설명을 알려줍니다. 모듈은 Maven 프로젝트의 빌딩 블록입니다. 모듈 및 해당 종속성은 최종 프로젝트를 빌드하는 데 사용됩니다.

maven 다중 모듈 프로젝트를 만드는 방법은 무엇입니까?

maven 다중 모듈 프로젝트를 만들려면 상위 pom을 정의하고 모든 하위 모듈이 이를 상속하는지 확인해야 합니다. 또한 모든 하위 모듈을 단일 저장소에 넣고 상위 pom이 해당 저장소를 가리키도록 할 수도 있다는 점에 유의하는 것도 중요합니다. maven 다중 모듈 프로젝트는 상위 pom과 하나 이상의 하위 모듈로 구성됩니다. 상위 pom은 아티팩트 ID, 버전, 패키징 및 종속성과 같은 다중 모듈 maven 프로젝트 메타데이터를 정의할 수 있습니다. 하위 모듈은 상위의 메타데이터를 상속할 수 있고 상위 pom은 프로젝트의 조직 및 설명과 같은 상위 수준 프로젝트 구성을 정의할 수 있습니다.