2.3.3. 프로젝트 종속성 관리

이 섹션에서는 Red Hat JBoss Enterprise Application Platform용 BSM(Bill of Materials) POM의 사용법에 대해 설명합니다.

BOM은 지정된 모듈에 대한 모든 런타임 종속성 버전을 지정하는 Maven pom.xml (POM) 파일입니다. 버전 종속성은 파일의 종속성 관리 섹션에 나열됩니다.

프로젝트는 프로젝트 pom.xml 파일의 종속성 관리 섹션에 groupId:artifactId:version: v(groupId:artifactId:version)를 추가하고 <scope>import</scope> 및 <type&gt;pom</type> 요소 값을 지정하여 BOM을 사용합니다.

참고

대부분의 경우 프로젝트 POM 파일의 종속 항목은 제공된 범위를 사용합니다. 이러한 클래스는 런타임 시 애플리케이션 서버에서 제공하며 사용자 애플리케이션으로 패키징할 필요가 없기 때문입니다.

지원되는 Maven Artifacts

제품 빌드 프로세스의 일환으로 JBoss EAP의 모든 런타임 구성 요소는 제어된 환경의 소스에서 빌드됩니다. 이렇게 하면 바이너리 아티팩트에 악성 코드가 포함되어 있지 않으며 제품 수명 동안 지원할 수 있습니다. 이러한 아티팩트는 -redhat 버전 한정자(예: 1.0.0-redhat -1) 로 쉽게 식별할 수 있습니다.

지원되는 아티팩트를 빌드 구성 pom.xml 파일에 추가하면 빌드에서 로컬 빌드 및 테스트에 올바른 바이너리 아티팩트를 사용하고 있는지 확인합니다. -redhat 버전이 있는 아티팩트는 지원되는 공용 API의 일부인 것은 아니며 향후 개정판에서는 변경될 수 있습니다. 지원되는 공개 API에 대한 자세한 내용은 릴리스에 포함된 Javadoc 설명서 를 참조하십시오.

예를 들어 지원되는 Hibernate 버전을 사용하려면 다음과 유사한 버전을 빌드 구성에 추가합니다.

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.3.1.Final-redhat-1</version>
  <scope>provided</scope>
</dependency>

위의 예에는 <version/> 필드의 값이 포함되어 있습니다. 그러나 Maven 종속성 관리를 사용하여 종속성 버전을 구성하는 것이 좋습니다.

종속성 관리

Maven에는 빌드 전체에서 직접 및 전이적 종속성 버전을 관리하는 메커니즘이 포함되어 있습니다. 종속성 관리 사용에 대한 일반적인 정보는 Apache Maven 프로젝트를 참조하십시오. 종속성 메커니즘 소개.

하나 이상의 지원 Red Hat 종속 항목을 빌드에 직접 사용하면 빌드의 모든 이전 종속성이 완전히 지원되는 Red Hat 아티팩트를 보장하지 않습니다. Maven 빌드에서는 Maven 중앙 리포지토리 및 기타 Maven 리포지토리의 아티팩트 소스를 혼합하여 사용하는 것이 일반적입니다.

JBoss EAP Maven 리포지토리에 종속성 관리 BOM이 포함되어 있으며, 지원되는 모든 JBoss EAP 바이너리 아티팩트를 지정합니다. 이 BOM은 빌드에서 Maven이 빌드의 모든 직접 및 전이적 종속성에 대해 지원되는 JBoss EAP 종속성에 우선 순위를 정하도록 할 수 있습니다. 즉, 이전 종속성은 해당하는 경우 올바른 지원 종속성 버전으로 관리됩니다. 이 BOM의 버전은 JBoss EAP 릴리스 버전과 일치합니다.

<dependencyManagement>
  <dependencies>
    ...
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>eap-runtime-artifacts</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>
참고

JBoss EAP 7에서는 이 BOM의 이름이 eap6-supported-artifacts에서 eap- runtime-artifacts 로 변경되었습니다. 이 변경의 목적은 이 POM의 아티팩트가 JBoss EAP 런타임의 일부이지만 지원되는 공용 API의 일부인 것을 더 명확히 하기 위한 것입니다. 일부 JAR에는 내부 API 및 기능이 포함되어 있으며, 릴리스마다 변경될 수 있습니다.

JBoss EAP Jakarta EE 사양 BOM

jboss-jakartaee-8.0 BOM에는 JBoss EAP에서 사용하는 Jakarta EE 사양 API JAR이 포함되어 있습니다.

프로젝트에서 이 BOM을 사용하려면 먼저 POM 파일의 dependencyManagement 섹션에 jboss-jakartaee-8.0 BOM에 대한 종속성을 추가하고 groupIdorg.jboss.spec 을 지정한 다음 애플리케이션에 필요한 특정 API에 대한 종속성을 추가합니다. API가 jboss-jakartaee-8.0 BOM에 포함되어 있기 때문에 이러한 종속성에는 버전이 필요하지 않으며 제공된 범위를 사용합니다.

다음 예제에서는 jboss-jakartaee-8.0 BOM의 1.0.0.Alpha1 버전을 사용하여 서블릿 및 Jakarta Server Pages API에 대한 종속성을 추가합니다.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.spec</groupId>
      <artifactId>jboss-jakartaee-8.0</artifactId>
      <version>1.0.0.Alpha1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet</groupId>
    <artifactId>jboss-servlet-api_4.0_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet.jsp</groupId>
    <artifactId>jboss-jsp-api_2.3_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
참고

JBoss EAP는 대부분의 제품 구성 요소의 API에 BOM을 패키징하고 제공합니다. 이러한 BOM 중 상당수는 org.jboss.bom 이라는 groupId 가 있는 더 큰 jboss-eap-jakartaee8 BOM로 편리하게 패키징됩니다. groupIdorg.jboss.specjboss-jakartaee-8.0 BOM이 이 대형 BOM에 포함됩니다. 즉, 이 BOM에 패키지된 추가 JBoss EAP 종속성을 사용하는 경우 jboss-jakartaee -8.0 및 기타 BOM 종속성을 별도로 추가하지 않고 프로젝트의 POM 파일에 하나의 jboss-eap-jakartaee 8 BOM만 추가하면 됩니다.

애플리케이션 개발에 사용 가능한 JBoss EAP BOM

다음 표에는 애플리케이션 개발에 사용할 수 있는 Maven BOM이 나열되어 있습니다.

표 2.1. JBoss BOMs

BOM Artifact ID사용 사례

eap-runtime-artifacts

지원되는 JBoss EAP 런타임 아티팩트.

jboss-eap-jakartaee8

지원되는 JBoss EAP Jakarta EE 8 API 및 추가 JBoss EAP API JAR.

jboss-eap-jakartaee8-with-tools

jboss-eap-jakartaee8 및 Arquillian과 같은 개발 툴.

참고

JBoss EAP 6의 이러한 BOM은 대부분의 사용 사례에서 더 간단하게 사용할 수 있도록 BOM이 더 적은 수로 통합되었습니다. 이제 Hibernate, 로깅, 트랜잭션, 메시징 및 기타 공용 API JAR이 각 사례에 별도의 BOM이 아닌 jboss-eap-jakartaee8 BOM에 포함됩니다.

다음 예제에서는 jboss-eap-jakartaee8 BOM의 7.4.0.GA 버전을 사용합니다.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-jakartaee8</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
JBoss EAP 클라이언트 BOM

클라이언트 BOM은 종속성 관리 섹션을 생성하거나 종속성을 정의하지 않습니다. 대신, 다른 BOM의 집계이며 원격 클라이언트 사용 사례에 필요한 종속성 집합을 패키징하는 데 사용됩니다.

The wildfly-ejb-client-bom,wildfly-jms-client-bom, and wildfly-jaxws-client-bomjboss-eap-jakartaee8 BOM에서 관리하므로 프로젝트 종속 항목에서 버전을 관리할 필요가 없습니다.

다음은 프로젝트에 wildfly-ejb-client-bom,wildfly- jms-client-bom 및 wildfly- jaxws-client-bom 종속성을 추가하는 방법의 예입니다.

<dependencyManagement>
  <dependencies>
    <!-- JBoss stack of the Jakarta EE APIs and related components.  -->
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-jakartaee8</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
  ...
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-ejb-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jaxws-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  ...
</dependencies>

Maven 종속성 및 BOM POM 파일에 대한 자세한 내용은 Apache Maven Project - Introduction to Dependency Mechanism을 참조하십시오.