본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

jar-cart: Lightning-Fast Java Build Orchestrator

0

jar-cart는 Go로 개발된 빠르고 크로스 플랫폼의 Java 의존성 관리 및 실행 도구입니다. Maven이나 Gradle 없이도 Java 아티팩트를 즉시 가져오고, 캐싱하고, 실행할 수 있게 해주는 최신 패키지 매니저입니다.

빌드 도구오픈소스의존성 관리패키지 매니저

소개

jar-cart는 Go로 개발된 빠르고 크로스 플랫폼의 Java 의존성 관리 및 실행 도구입니다. Maven이나 Gradle 없이도 Java 아티팩트를 즉시 가져오고, 캐싱하고, 실행할 수 있게 해주는 최신 패키지 매니저입니다. 콘텐츠 주소 지정 스토리지(CAS)와 하드 링크를 활용하여 디스크 사용량을 최소화하면서 빠른 의존성 재사용을 제공합니다.

상세정보

성능 및 효율성

  • 콘텐츠 주소 지정 스토리지(CAS): 아티팩트를 한 번만 다운로드하여 모든 프로젝트에서 공유합니다.
  • 하드 링크: 디스크 사용량을 중복하지 않고 의존성을 프로젝트에 즉시 연결합니다.
  • 점진적 빌드: SHA-256 콘텐츠 인식 해싱을 사용하여 소스 파일이 변경되지 않았을 때 불필요한 재컴파일을 건너뜁니다.
  • 성능 원격 측정: 모든 명령이 실행 시간을 보고하여 파이프라인 성능에 대한 즉각적인 피드백을 제공합니다.

배포 및 최적화

  • 매니페스트 기반 최적화: jar-cart.json 또는 jar-cart.xml에서 압축, 디버그 정보 제거, 네이티브 코드 제거를 선언적으로 구성할 수 있습니다.
  • 최소 런타임 패키징: jlink를 사용하여 표준 290MB 이상의 JDK 배포판을 약 12MB의 컴팩트한 독립형 런타임으로 자동 생성합니다.

격리된 런타임

  • 프로젝트별 버전 고정: 프로젝트마다 특정 JDK 버전을 고정할 수 있으며, jar-cart는 격리된 런타임을 자동으로 프로비저닝하고 관리합니다.

다중 모듈 워크스페이스

  • 모노레포 및 엔터프라이즈 규모: jar-cart.workspace.json을 사용하여 여러 독립적인 모듈을 그룹화할 수 있습니다.
  • 위상 정렬: 모듈 의존성을 자동으로 해석하고 올바른 순서로 프로젝트를 컴파일합니다.

역공학 및 패칭

  • 통합 디컴파일: Vineflower, CFR, Procyon을 자동으로 프로비저닝하고 관리합니다.
  • 디컴파일러에서 빌드로의 워크플로: 디컴파일된 애플리케이션을 수정하고 네이티브 jar-cart 도구체인을 사용하여 실행 가능한 JAR로 다시 빌드할 수 있습니다.

지능형 CLI 경험

  • 자동 진입점 감지: 애플리케이션의 main() 클래스를 자동으로 탐지합니다.
  • NPM 스타일 인자 포워딩: –를 사용하여 애플리케이션에 직접 인자를 전달할 수 있습니다.

Windows (PowerShell)

다음 명령을 PowerShell에서 실행하여 최신 버전을 설치할 수 있습니다.

iwr https://raw.githubusercontent.com/Sudhanshu-Ambastha/jar-cart/main/scripts/install.ps1 -UseBasicParsing | iex

특정 버전을 설치하려면 다음과 같이 지정할 수 있습니다.

iwr https://raw.githubusercontent.com/Sudhanshu-Ambastha/jar-cart/main/scripts/install.ps1 -OutFile install.ps1

.install.ps1 -Version v0.2.1

Windows (WinGet)

WinGet을 사용하여 설치할 수도 있습니다.

winget install Sudhanshu-Ambastha.jar-cart

Linux / macOS

다음 명령을 터미널에서 실행합니다.

curl -sSL https://raw.githubusercontent.com/Sudhanshu-Ambastha/jar-cart/main/scripts/install.sh | bash

Homebrew (Linux / macOS)

Homebrew를 사용하는 경우 다음 단계를 따릅니다.

  1. tap 추가: brew tap Sudhanshu-Ambastha/tap
  2. tap 신뢰: brew trust Sudhanshu-Ambastha/tap
  3. 설치: brew install jar-cart

기본 사용법/명령어

프로젝트를 초기화하려면 다음 명령을 사용합니다.

jar-cart init my-app
cd my-app

다음은 주요 명령어 목록입니다.

  • init: JDK 고정이 포함된 대화형 프로젝트 레이아웃을 생성합니다.
  • ls-java: 관리되는 모든 JDK 런타임을 나열합니다.
  • cache list/ls: 캐시된 아티팩트와 저장소 사용량을 표시합니다.
  • search : Maven Central에서 패키지를 검색합니다.
  • sync: 의존성을 동기화하고 프로젝트 런타임을 프로비저닝합니다.
  • add : 프로젝트 매니페스트에 의존성을 추가합니다.
  • audit: 알려진 취약성에 대해 프로젝트 의존성을 검사합니다.
  • run [– args…]: 프로젝트를 컴파일하고 실행합니다.
  • watch [– args…]: 소스 변경 사항을 감시하고, 다시 컴파일한 후 재시작합니다.
  • build: 프로젝트를 휴대용 Fat JAR로 패키징합니다.
  • optimize : 사용자 지정 독립형 런타임을 생성합니다.

이런 경우에 유용합니다

Java 개발자들에게 jar-cart는 다음과 같은 상황에서 유용합니다.

  • 빠른 프로토타이핑: Maven이나 Gradle의 설정 없이 Java 아티팩트를 즉시 실행하고 테스트할 때.
  • 의존성 관리: 여러 프로젝트에서 동일한 의존성을 효율적으로 공유하고 관리할 때.
  • 버전 고정: 각 프로젝트에 대해 특정 JDK 버전을 사용하여 환경 일관성을 보장할 때.
  • 모노레포 개발: 여러 모듈을 포함한 대규모 프로젝트에서 의존성을 동기화하고 빌드할 때.
  • 버그 수정 및 리버스 엔지니어링: 기존 JAR 파일을 디컴파일하고 수정한 후 다시 빌드할 때.

지원 환경·시스템 요구사항

jar-cart는 Windows, Linux, macOS에서 작동하며, Go로 작성되어 크로스 플랫폼을 지원합니다. 프로젝트에서 사용하는 JDK 버전은 자동으로 관리되므로 시스템 전역 JAVA_HOME 설정이 필요하지 않습니다.

최신 버전·업데이트

최신 버전은 0.6.0입니다. jar-cart를 업데이트하려면 다음 명령을 사용합니다.

jar-cart self-update

또는 특정 릴리스로 전환할 수 있습니다.

jar-cart self-update [version]

제한 사항·확인 사항

jar-cart는 MIT 라이선스로 배포되는 오픈소스 도구입니다. 현재 GitHub 저장소에서 개발 및 관리되며, Chocolatey 패키지로도 제공됩니다. 프로젝트 매니페스트로 jar-cart.json 또는 jar-cart.xml 형식을 지원합니다.

시스템 요구사항

Windows, Linux 또는 macOS 운영 체제가 필요합니다. Java 개발 환경에서 사용되며, 프로젝트에 따라 특정 JDK 버전이 자동으로 관리됩니다.