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()
을 Nexusmaven
블록으로 교체함으로써 Gradle이 Nexus를 통해 종속성을 해결하도록 지시합니다.
사용자 정의 라이브러리 관리 (호스팅된 리포지토리)
Nexus의 hosted
리포지토리는 공개 리포지토리에서 사용할 수 없는 아티팩트를 저장하도록 설계되었습니다. 예를 들어 내부에서 개발된 라이브러리나 특정 버전의 서드파티 라이브러리가 있습니다.
빌드 도구는 호스팅된 리포지토리가 빌드에 구성된 group
리포지토리에 포함될 때 이러한 내부 라이브러리에 접근할 수 있습니다 (settings.xml
또는 build.gradle
).
호스팅된 리포지토리에 아티팩트를 업로드하려면 일반적으로 Nexus 내에서 관리 권한이 필요합니다. 프로젝트 팀은 보통 이 목적을 위해 플랫폼 관리자와 조율해야 합니다.