Azure SDK 및 Apache Maven 시작

이 문서에서는 Apache Maven을 사용하여 Java용 Azure SDK를 사용하여 애플리케이션을 빌드하는 방법을 보여 줍니다. 이 문서에서는 Maven을 사용하여 새 프로젝트를 설정하고, Maven을 사용하여 프로젝트를 빌드하고, GraalVM 네이티브 이미지 도구를 사용하여 플랫폼별 네이티브 이진 파일을 만듭니다.

Java용 Azure SDK 프로젝트에는 새 프로젝트의 부트스트랩을 가속화할 수 있는 Maven 원형이 포함되어 있습니다. Java Maven용 Azure SDK 아키타입은 모범 사례를 따르는 파일 및 디렉터리 구조를 사용하여 새 애플리케이션을 만듭니다. 특히 Java Maven용 Azure SDK 아키타입은 다음 기능을 사용하여 새 Maven 프로젝트를 만듭니다.

  • Java용 Azure SDK에 대한 모든 종속성이 정렬되고 최상의 개발자 환경을 제공하는 최신 azure-sdk-bom BOM 릴리스에 대한 종속성입니다.
  • GraalVM 네이티브 이미지 컴파일에 대한 기본 제공 지원.
  • 지정된 Java 클라이언트 라이브러리용 Azure SDK 집합을 사용하여 새 프로젝트를 생성하도록 지원합니다.
  • Java용 Azure SDK 빌드 도구와 통합하면 프로젝트의 빌드 시간 분석을 통해 많은 모범 사례를 따를 수 있습니다.

필수 조건

새 Maven 프로젝트 만들기

Java Maven용 Azure SDK 아키타입이 Maven Central에 게시됩니다. 즉, 아키타입을 직접 사용하여 다음 명령을 사용하여 새 애플리케이션을 부트스트랩할 수 있습니다.

mvn archetype:generate \
    -DarchetypeGroupId=com.azure.tools \
    -DarchetypeArtifactId=azure-sdk-archetype

이 명령을 입력하면 원형이 적합한 출력을 생성할 수 있도록 일련의 프롬프트가 프로젝트에 대한 세부 정보를 요청합니다. 다음 표에서는 값을 제공하는 데 필요한 속성을 설명합니다.

이름 설명
groupId (필수) 생성된 프로젝트에 대해 만든 POM 파일에서 사용할 Maven groupId 입니다.
artifactId (필수) 생성된 프로젝트에 대해 만든 POM 파일에서 사용할 Maven artifactId 입니다.
package (선택 사항) 생성된 코드를 넣을 패키지 이름입니다. 지정되지 않은 경우 유 groupId 추됩니다.
azureLibraries (선택 사항) Maven 아티팩트 ID를 사용하여 Java 라이브러리용 Azure SDK의 쉼표로 구분된 목록입니다. 이러한 아티팩트 ID 목록은 Azure SDK 릴리스를 참조 하세요.
enableGraalVM (선택 사항) 생성된 Maven POM 파일에 GraalVM을 사용하여 네이티브 이미지로 애플리케이션을 컴파일하는 지원이 포함되지 않아야 함을 나타내는 false 입니다. 그렇지 않으면 true입니다. 기본값은 true입니다.
javaVersion (선택 사항) 생성된 프로젝트를 빌드할 때 대상으로 지정할 JDK의 최소 버전(예: 8, 11 또는 17)입니다. 기본값은 최신 LTS 릴리스(현재 17)입니다. 최소값은 8입니다.
junitVersion (선택 사항) 종속성으로 포함할 JUnit 버전입니다. 기본값은 5입니다. 유효한 값 45입니다.

또는 이전에 표시된 아키타입 명령을 호출할 때 이러한 값을 제공할 수 있습니다. 이 방법은 예를 들어 자동화 목적으로 유용합니다. 매개 변수 이름에 추가하는 -D 표준 Maven 구문을 사용하여 값을 매개 변수로 지정할 수 있습니다. 예를 들면 다음과 같습니다.

-DjavaVersion=17

Java 버전 지원

프로덕션에 배포할 때 Java LTS 릴리스를 사용하는 것이 가장 좋습니다. 기본적으로 Azure SDK Maven 아키타입은 현재 Java 17 기준을 설정하는 최신 LTS 릴리스를 선택합니다. 그러나 매개 변수를 설정하여 기본 동작을 재정의할 javaVersion 수 있습니다.

Java용 Azure SDK 빌드 도구 사용

Java용 Azure SDK 프로젝트에는 프로젝트에 포함할 수 있는 Maven 빌드 도구가 제공됩니다. 이 도구는 로컬에서 실행되며 Microsoft에 데이터를 전송하지 않습니다. 특정 조건이 충족될 때 보고서를 생성하거나 빌드에 실패하도록 도구를 구성할 수 있습니다. 이는 다음과 같은 다양한 모범 사례를 준수하는 데 유용합니다.

  • 최신 버전 사용, Java용 Azure SDK 클라이언트 라이브러리에 대한 종속성 버전 정의에 의존하는 등 BOM의 azure-sdk-for-java 올바른 사용 유효성 검사 자세한 내용은 기존 프로젝트 섹션에 Java용 Azure SDK 추가 섹션을 참조하세요.
  • 최신 버전과 향상된 버전이 있을 때 기록 Azure 클라이언트 라이브러리가 사용되지 않는지 확인합니다.

또한 이 보고서는 베타 API 사용에 대한 인사이트를 제공합니다.

다음 예제와 같이 Maven POM 파일 프로젝트에서 빌드 도구를 구성할 수 있습니다. 자리 표시자를 온라인에 나열된 최신 버전으로 바꿔 {latest_version} 야 합니다.

<build>
  <plugins>
    <plugin>
      <groupId>com.azure.tools</groupId>
      <artifactId>azure-sdk-build-tool</artifactId>
      <version>{latest_version}</version>
    </plugin>
  </plugins>
</build>

Maven 프로젝트에 빌드 도구를 추가한 후 호출 mvn compile azure:run하여 도구를 실행할 수 있습니다. 제공된 구성에 따라 빌드 오류가 표시되거나 생성된 보고서 파일이 더 심각해지기 전에 잠재적인 문제에 대해 알려줄 수 있습니다. CI/CD 파이프라인의 일부로 이 도구를 실행하는 것이 좋습니다. 빌드 도구가 발전함에 따라 새 릴리스를 게시하고 개발자는 새 릴리스에 대해 자주 검사 적절하게 업데이트하는 것이 좋습니다.

특정 기능을 사용하거나 사용하지 않도록 빌드 도구를 구성할 수 있습니다. 이 구성의 경우 이전에 표시된 XML에 섹션을 추가 configuration 합니다. 해당 섹션 내에서 다음 표에 표시된 설정을 구성합니다. 명시적으로 멘션 않은 구성은 테이블에 지정된 기본값을 사용합니다.

Property name 기본값 설명
validateAzureSdkBomUsed true Java용 Azure SDK 클라이언트 라이브러리 종속성이 BOM에서 해당 버전을 사용할 수 있도록 프로젝트에 적절하게 참조된 azure-sdk-for-java BOM이 있는지 확인합니다.
validateLatestBomVersionUsed true 최신 azure-sdk-for-java BOM 이 있는 경우 다시 보고(또는 빌드 실패)하여 종속성을 최신 상태로 유지합니다. 항상 최신 버전을 온라인으로 찾을 수 있습니다.
validateBomVersionsAreUsed true azure-sdk-for-java BOM에서 종속성을 사용할 수 있는 경우 버전이 수동으로 재정의되지 않도록 합니다.
validateNoDeprecatedMicrosoftLibraryUsed true 프로젝트가 이전 세대 Azure 라이브러리를 사용하지 않도록 합니다. 단일 프로젝트에서 새 및 이전 세대 라이브러리를 사용하면 문제가 발생하지 않지만 최적이 아닌 개발자 환경이 발생합니다.
validateNoBetaLibraryUsed false Java용 일부 Azure SDK 클라이언트 라이브러리에는 버전 문자열이 있는 x.y.z-beta.n베타 릴리스가 있습니다. 이 기능을 사용하도록 설정하면 베타 라이브러리가 사용되지 않습니다.
validateNoBetaApiUsed true Java용 Azure SDK 클라이언트 라이브러리에는 주석이 추가된 @Beta메서드가 있는 GA 릴리스가 있는 경우가 있습니다. 이 검사 이러한 메서드가 사용되고 있는지 확인합니다.
sendToMicrosoft true 원격 분석을 위해 빌드 보고서를 Microsoft에 보낼지 여부를 지정합니다. 이렇게 하면 개발 팀이 설명서, 샘플 및 향상된 편의 API의 우선 순위를 지정할 위치를 안내할 수 있습니다. 사용자 식별 가능 콘텐츠가 제출되지 않습니다.
reportFile - (선택 사항) 빌드 보고서를 작성할 위치를 JSON 형식으로 지정합니다. 지정하지 않으면 보고서가 작성되지 않으며 빌드 요약 또는 적절한 빌드 실패가 터미널에 표시됩니다.

기존 프로젝트에 Java용 Azure SDK 추가

종속성 버전 관리를 더 간단하게 만들기 위해 Java용 Azure SDK 팀은 매달 Java용 Azure SDK 클라이언트 BOM을 게시합니다. 이 BOM 파일에는 호환되는 종속성 버전이 있는 Java용 모든 GA(일반 공급) Azure SDK 클라이언트 패키지가 포함됩니다.

BOM에 있는 Java용 Azure SDK 클라이언트 라이브러리에 종속성 버전을 사용하려면 프로젝트 pom.xml 파일에 다음 코드 조각을 포함합니다. {bom_version_to_target} 자리 표시자를 Java BOMAzure SDK의 최신 릴리스로 바꿉 있습니다. {artifactId} 자리 표시자를 Azure 서비스 SDK 패키지 이름으로 바꿉 있습니다.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-sdk-bom</artifactId>
      <version>{bom_version_to_target}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>{artifactId}</artifactId>
  </dependency>
</dependencies>

Azure-sdk-bom에서 Java용 Azure SDK 클라이언트 BOM의 모든 릴리스를 찾을 수 있습니다. 최신 버전을 사용하여 Java용 Azure SDK 클라이언트 라이브러리의 최신 기능을 활용하는 것이 좋습니다.

Maven을 사용하여 프로젝트 종속성을 정의하면 프로젝트를 더 간단하게 관리할 수 있습니다. Azure SDK BOM 및 Azure SDK Maven 아키타입을 사용하면 장기적으로 종속성 버전 관리의 자신감을 높이면서 프로젝트를 가속화할 수 있습니다. BOM을 사용하여 종속성을 정렬하고 최신 상태로 유지하는 것이 좋습니다.

Azure SDK BOM을 추가하는 것 외에도 Java용 Azure SDK 빌드 도구를 포함하는 것이 좋습니다. 이 도구는 이 문서의 앞에서 설명한 대로 애플리케이션을 빌드할 때 일반적으로 발생하는 많은 문제를 진단하는 데 도움이 됩니다.

BOM에 없는 패키지 포함

Java용 Azure SDK 클라이언트 BOM에는 GA(일반 공급) 라이브러리만 포함됩니다. 베타 버전이나 BOM에 포함된 것과 다른 라이브러리 버전에 있는 패키지에 종속하려는 경우 종속성 섹션 및 artifactId 종속성 섹션과 groupId 함께 Maven 종속성 버전을 지정할 수 있습니다. 다음 예제와 같이 동일한 프로젝트 POM 파일에서 재정의된 버전과 함께 BOM 버전 및 종속성을 사용하는 종속성을 선택할 수 있습니다.

<dependencies>
  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-eventhubs</artifactId> <!-- Use the dependency version that is in the BOM -->
  </dependency>
  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-servicebus</artifactId>
    <version>7.4.0</version> <!-- Override the Service Bus dependency version specified in the BOM -->
  </dependency>
</dependencies>

이 방법을 사용하고 프로젝트에서 직접 버전을 지정하면 종속성 버전 충돌이 발생할 수 있습니다. 이러한 충돌은 서로 다른 패키지가 서로 다른 버전의 공통 종속성에 따라 달라질 수 있으며 이러한 버전이 서로 호환되지 않을 수 있기 때문에 발생합니다. 충돌이 발생하면 컴파일 시간 또는 런타임에 바람직하지 않은 동작이 발생할 수 있습니다. 필요한 경우가 아니면 Azure SDK BOM에 있는 버전을 사용하는 것이 좋습니다. Java용 Azure SDK를 사용할 때 종속성 처리에 대한 자세한 내용은 종속성 버전 충돌 문제를 참조 하세요.

GraalVM을 사용하여 네이티브 이미지 빌드

GraalVM을 사용하여 Java 애플리케이션의 네이 티브 이미지를 만들 수 있습니다. GraalVM은 Java 코드를 네이티브 머신 코드로 미리 컴파일하므로 특정 상황에서 성능이 크게 향상됩니다. Java용 Azure SDK는 GraalVM 네이티브 이미지 컴파일을 지원하기 위해 각 클라이언트 라이브러리에 필요한 메타데이터를 제공합니다.

시작하려면 GraalVM을 설치하고 네이티브 이미지를 컴파일하기 위한 개발 시스템을 준비해야 합니다. GraalVM의 설치 프로세스는 간단하며 GraalVM 설명서에서는 GraalVM을 설치하고 GraalVM을 사용하여 네이티브 이미지를 설치하기 위한 단계별 지침을 제공합니다. 필수 구성 요소 섹션에 따라 운영 체제에 필요한 네이티브 컴파일러를 설치합니다.

Java Maven용 Azure SDK 아키타입GraalVM 네이티브 이미지 컴파일을 지원하도록 빌드를 구성할 수 있지만 기존 Maven 빌드에 추가할 수도 있습니다. GraalVM 웹 사이트에서 Maven에 대한 지침을 찾을 수 있습니다.

다음으로 네이티브 이미지 빌드를 실행할 준비가 된 것입니다. 표준 Maven 도구를 사용하여 GraalVM 네이티브 이미지를 사용할 수 있습니다. Maven의 경우 다음 명령을 사용합니다.

mvn clean package -Pnative

이 명령을 실행한 후 GraalVM은 실행 중인 플랫폼에 대한 네이티브 실행 파일을 출력합니다. 실행 파일은 프로젝트의 Maven /target 디렉터리에 표시됩니다. 이제 이 실행 파일을 사용하여 애플리케이션을 실행할 수 있으며 표준 Java 애플리케이션과 유사하게 수행되어야 합니다.

다음 단계