2장. JBoss EAP에서 Maven 사용
2.1. Maven에 대해 알아보기
2.1.1. Maven 리포지토리 정보
Apache Maven은 Java 애플리케이션 개발에 사용되는 분산 빌드 자동화 도구로 소프트웨어 프로젝트를 생성, 관리 및 빌드합니다. Maven은 Project Object Model 또는 POM이라는 표준 구성 파일을 사용하여 프로젝트를 정의하고 빌드 프로세스를 관리합니다. Poms는 XML 파일을 사용하여 결과 프로젝트 패키징 및 출력의 모듈 및 구성 요소 종속성, 빌드 순서 및 타겟을 설명합니다. 이렇게 하면 프로젝트가 올바르고 일관된 방식으로 구축됩니다.
Maven은 리포지토리를 사용하여 이를 수행합니다. Maven 리포지토리는 Java 라이브러리, 플러그인 및 기타 빌드 아티팩트를 저장합니다. 기본 공용 리포지토리는 Maven 2 중앙 리포지토리이지만, 개발 팀 간에 공통 아티팩트를 공유하는 목표를 사용하여 회사 내에서 개인 및 내부 리포지토리가 될 수 있습니다. 타사에서 리포지토리를 사용할 수도 있습니다. JBoss EAP에는 Jakarta EE 개발자가 JBoss EAP에서 애플리케이션을 빌드하는 데 일반적으로 사용하는 많은 요구 사항이 포함된 Maven 리포지토리가 포함되어 있습니다. 이 리포지토리를 사용하도록 프로젝트를 구성하려면 JBoss EAP Maven 리포지토리 구성을 참조하십시오.
Maven에 대한 자세한 내용은 Welcome to Apache Maven 을 참조하십시오.
Maven 리포지토리에 대한 자세한 내용은 Apache Maven Project - Introduction to Repositories (리포지토리 소개)를 참조하십시오.
2.1.2. Maven POM 파일 정보
프로젝트 오브젝트 모델(POM) 파일은 Maven에서 프로젝트를 빌드하는 데 사용하는 구성 파일입니다. 프로젝트에 대한 정보와 소스, 테스트 및 대상 디렉터리의 위치, 테스트 및 대상 디렉터리, 프로젝트 종속성, 플러그인 리포지토리 및 실행할 수 있는 목표를 포함하여 프로젝트에 대한 정보가 포함된 XML 파일입니다. 또한 버전, 설명, 개발자, 메일링 리스트, 라이센스 등 프로젝트에 대한 추가 세부 정보를 포함할 수 있습니다. pom.xml 파일에는 일부 구성 옵션이 필요하며 다른 모든 옵션은 기본값으로 설정됩니다.
pom.xml 파일의 스키마는 http://maven.apache.org/maven-v4_0_0.xsd 에 있습니다.
POM 파일에 대한 자세한 내용은 Apache Maven 프로젝트 POM 참조를 참조하십시오.
Maven POM 파일의 최소 요구 사항
pom.xml 파일의 최소 요구 사항은 다음과 같습니다.
- 프로젝트 루트
- modelVersion
- groupid - 프로젝트 그룹의 ID
- artifactId - 아티팩트의 ID (프로젝트)
- Version - 지정된 그룹의 아티팩트 버전
예제: 기본 pom.xml 파일
기본 pom.xml 파일은 다음과 같을 수 있습니다.
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.jboss.app</groupId> <artifactId>my-app</artifactId> <version>1</version> </project>
2.1.3. Maven 설정 파일 정보
Maven settings.xml 파일에는 Maven에 대한 사용자별 구성 정보가 포함되어 있습니다. 여기에는 개발자 ID, 프록시 정보, 로컬 리포지토리 위치 및 사용자와 관련된 기타 설정과 같은 pom.xml 파일과 함께 배포해서는 안 되는 정보가 포함되어 있습니다.
settings.xml을 찾을 수 있는 위치는 두 가지가 있습니다.
-
Maven 설치에서 다음을 수행합니다. 설정 파일은
$M2_HOME/conf/디렉터리에 있습니다. 이러한 설정을전역설정이라고 합니다. 기본 Maven 설정 파일은 사용자 설정 파일의 시작점으로 복사하고 사용할 수 있는 템플릿입니다. -
사용자 설치에서 다음을 수행합니다. 설정 파일은
${user.home}/.m2/디렉터리에 있습니다. Maven 및 사용자settings.xml파일이 모두 있는 경우 내용이 병합됩니다. 중복되는 경우 사용자의settings.xml파일이 우선합니다.
예제: Maven 설정 파일
<?xml version="1.0" encoding="UTF-8"?>
<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">
<profiles>
<!-- Configure the JBoss EAP Maven repository -->
<profile>
<id>jboss-eap-maven-repository</id>
<repositories>
<repository>
<id>jboss-eap</id>
<url>file:///path/to/repo/jboss-eap-7.4.0-maven-repository/maven-repository</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>jboss-eap-maven-plugin-repository</id>
<url>file:///path/to/repo/jboss-eap-7.4.0-maven-repository/maven-repository</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!-- Optionally, make the repository active by default -->
<activeProfile>jboss-eap-maven-repository</activeProfile>
</activeProfiles>
</settings>
settings.xml 파일의 스키마는 http://maven.apache.org/xsd/settings-1.0.0.xsd 에서 찾을 수 있습니다.
2.1.4. Maven 리포지토리 관리자 정보
리포지토리 관리자는 Maven 리포지토리를 쉽게 관리할 수 있는 툴입니다. 리포지토리 관리자는 다음과 같은 여러 가지 방법으로 유용합니다.
- 조직과 원격 Maven 리포지토리 간에 프록시를 구성할 수 있는 기능을 제공합니다. 이는 더욱 빠르고 효율적인 배포를 비롯하여 Maven에서 다운로드한 항목에 대한 보다 나은 제어 수준을 비롯하여 여러 가지 이점을 제공합니다.
- 자체 생성된 아티팩트를 위한 배포 대상을 제공하여 조직 간 다양한 개발 팀 간의 협업이 가능합니다.
Maven 리포지토리 관리자에게 대한 자세한 내용은 모범 사례 - 리포지토리 관리자 사용을 참조하십시오.
일반적으로 사용되는 Maven 리포지토리 관리자
- Sonatype Nexus
- Nexus에 대한 자세한 내용은 Sonatype Nexus 설명서를 참조하십시오.
- Artifactory
- Artifactory에 대한 자세한 내용은 JFrog Artifactory 문서를 참조하십시오.
- Apache Archiva
- Apache Archiva를 참조하십시오. Apache Archiva에 대한 자세한 내용은 Artifact Repository Manager 를 참조하십시오.
리포지토리 관리자가 일반적으로 사용되는 엔터프라이즈 환경에서 Maven은 이 관리자를 사용하여 모든 프로젝트의 모든 아티팩트를 쿼리해야 합니다. Maven은 선언된 모든 리포지토리를 사용하여 누락된 아티팩트를 찾기 때문에 원하는 항목을 찾을 수 없는 경우 리포지토리 중앙에서 해당 리포지토리(기본 제공 상위 POM에 정의되어 있음)에서 찾습니다. 이 중앙 위치를 재정의하려면 기본 리포지토리가 중앙 리포지토리가 될 수 있도록 정의를 중앙 으로 추가할 수 있습니다. 이 작업은 이미 구축된 프로젝트에 적합하지만, 클린 또는 'new' 프로젝트의 경우 재활용 종속성이 생성되기 때문에 문제가 발생합니다.