본문으로 건너뛰기

Dependency Management

Cloud ZCP는 애플리케이션 종속성을 처리하기 위한 통합 리포지토리 관리 도구로 Sonatype Nexus을(를) 사용합니다. Nexus는 Java 라이브러리(JAR), Node 모듈 및 잠재적으로 다른 아티팩트 유형과 같은 애플리케이션에 필요한 소프트웨어 바이너리를 관리하는 데 중요한 역할을 합니다.

주요 기능은 다음과 같습니다:

  • Proxying Public Repositories: Nexus는 Maven Central, npmjs.org 등과 같은 공용 리포지토리에 대한 로컬 프록시(또는 미러)로 작동할 수 있습니다. 이를 통해 폐쇄 네트워크에 있는 개발 및 빌드 환경이 다운로드된 아티팩트를 캐싱하여 외부 종속성에 신뢰할 수 있고 효율적으로 접근할 수 있습니다.
  • Hosting Internal Libraries: Nexus는 조직이 자체 내부 라이브러리나 공유 구성 요소를 업로드하고 관리할 수 있는 hosted 리포지토리를 제공합니다 1 .
  • Grouping Repositories: 리포지토리를 함께 그룹화할 수 있어 빌드 도구가 여러 소스에서 검색할 수 있습니다(예: 내부 라이브러리에 대해 먼저 호스팅된 리포지토리를 확인한 다음 외부 라이브러리에 대해 프록시 리포지토리를 확인).

Access Nexus

ZCP 콘솔의 프로젝트 메뉴를 통해 Nexus 인터페이스에 접근할 수 있습니다: Dev Tools > Nexus.

표준 프로젝트 사용자는 일반적으로 Nexus UI에 직접 로그인할 수 있는 계정이 없습니다. 리포지토리를 보는 것은 Browse 메뉴를 통해 가능합니다. 호스팅된 리포지토리를 생성하거나 사용자 정의 라이브러리를 업로드하는 작업은 일반적으로 플랫폼 관리자에게 도움을 요청해야 합니다.

Nexus를 탐색할 때 다양한 리포지토리 유형을 만나게 됩니다:

  • proxy: 외부 공용 리포지토리를 미러링합니다. 다운로드된 아티팩트를 캐싱합니다.
  • hosted: 내부에서 개발되거나 업로드된 아티팩트를 저장합니다.
  • group: 여러 개의 프록시 및/또는 호스팅된 리포지토리를 단일 액세스 지점으로 결합합니다. 라이브러리는 그룹 내에서 정의된 순서로 검색됩니다.

Nexus를 Maven 미러로 사용하기

Maven을 사용하는 Java 프로젝트의 경우, 특히 직접 인터넷에 액세스할 수 없는 환경에서는 Nexus를 미러 리포지토리로 구성할 수 있습니다.

  • Configuration File: Maven의 settings.xml 파일을 수정합니다 (일반적으로 ~/.m2/settings.xml 또는 Maven 설치 내의 /conf/settings.xml에 위치).
  • Mirror Settings: <mirrors> 섹션 내에 <mirror> 항목을 추가합니다:
<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 https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<mirrors>
<mirror>
<id>modernizationplatform</id> <name>Modernization Platform Nexus</name> <url>NEXUS_REPOSITORY_URL</url> <mirrorOf>*</mirrorOf> </mirror>
</mirrors>
...
</settings>
  • Finding the URL: Nexus UI (Browse 섹션)에서 원하는 리포지토리를 찾습니다 (일반적으로 공용 리포지토리에 대한 프록시와 잠재적으로 내부 호스팅 리포지토리를 포함하는 group 유형 리포지토리) 및 Copy URL 버튼을 사용하여 올바른 NEXUS_REPOSITORY_URL을 가져옵니다.
  • mirrorOf Setting:
    • *를 사용하면 Maven이 all 리포지토리 요청을 이 Nexus 미러를 통해 라우팅합니다.
    • 또는 특정 리포지토리 ID (예: central)를 지정하여 pom.xml에 정의된 특정 리포지토리만 미러링할 수 있습니다.
  • IDE Integration: 개발 환경 (Eclipse, IntelliJ, VSCode 등)이 이 settings.xml 파일을 사용하도록 구성되어 있는지 확인합니다.

Nexus를 Gradle 프록시로 사용하기

Gradle을 사용하는 프로젝트의 경우, 프로젝트의 build.gradle 파일 내에서 Nexus 액세스를 구성합니다.

  • Configuration File: 프로젝트의 build.gradle (또는 build.gradle.kts) 파일을 수정합니다.
  • Repository Settings: repositories { ... } 블록을 조정합니다:
repositories {
// 프록시를 강제하려면 mavenCentral() 또는 jcenter()의 주석을 제거하거나 삭제합니다
// mavenCentral()

maven {
url "NEXUS_REPOSITORY_URL" // Nexus *group* 리포지토리의 URL
}
}
  • Finding the URL: Maven과 마찬가지로, Nexus UI에서 Copy URL 버튼을 사용하여 적절한 group 리포지토리 URL을 찾습니다. mavenCentral()을 Nexus maven 블록으로 교체함으로써 Gradle이 Nexus를 통해 종속성을 해결하도록 지시합니다.

사용자 정의 라이브러리 관리 (호스팅된 리포지토리)

Nexus의 hosted 리포지토리는 공개 리포지토리에서 사용할 수 없는 아티팩트를 저장하도록 설계되었습니다. 예를 들어 내부에서 개발된 라이브러리나 특정 버전의 서드파티 라이브러리가 있습니다.

빌드 도구는 호스팅된 리포지토리가 빌드에 구성된 group 리포지토리에 포함될 때 이러한 내부 라이브러리에 접근할 수 있습니다 (settings.xml 또는 build.gradle).

호스팅된 리포지토리에 아티팩트를 업로드하려면 일반적으로 Nexus 내에서 관리 권한이 필요합니다. 프로젝트 팀은 보통 이 목적을 위해 플랫폼 관리자와 조율해야 합니다.