Auto-update library for Java
Find a file
2026-10-02 12:48:30 +09:00
.idea bootstrap 2026-10-02 12:21:23 +09:00
autoupdate reviewed by Cursor 2026-10-02 12:48:30 +09:00
build-logic bootstrap 2026-10-02 03:43:43 +09:00
example reviewed by Cursor 2026-10-02 12:48:30 +09:00
gradle bootstrap 2026-10-02 03:43:43 +09:00
.gitattributes bootstrap 2026-10-02 03:43:43 +09:00
.gitignore bootstrap 2026-10-02 03:43:43 +09:00
gradle.properties bootstrap 2026-10-02 03:43:43 +09:00
gradlew bootstrap 2026-10-02 03:43:43 +09:00
gradlew.bat bootstrap 2026-10-02 03:43:43 +09:00
LICENSE bootstrap 2026-10-02 04:01:35 +09:00
README.md reviewed by Cursor 2026-10-02 12:48:30 +09:00
settings.gradle.kts bootstrap 2026-10-02 12:21:23 +09:00

Archer

데스크톱/독립 실행형 자바 애플리케이션을 위한 백그라운드 자동 업데이트 라이브러리입니다.

  • 원격 버전 체크 (Semantic Versioning)
  • 비동기 데몬(가상) 스레드 다운로드 + 진행률/속도 콜백
  • SHA-256 무결성 검증
  • JVM Shutdown Hook + Bootstrap Launcher로 안전 교체/Rollback
  • 비정상 종료 후 재시작 시 미적용 패치 복구 (FR-07)
  • Java 21+, Windows / macOS / Linux, jlink·jpackage 환경 지원

모듈 좌표: com.elex-project:archer


빠른 시작

ArcherConfig config = new ArcherConfig.Builder()
        .currentVersion("1.0.0")
        .updateApiUrl("https://example.com/api/update")
        .targetJarPath(Path.of("app.jar"))
        .tempDirectory(Path.of("temp"))
        .restartAppAfterUpdate(true)
        .build();

Archer archer = new Archer(config)
        .setListener(new UpdateListener() {
            @Override
            public void onUpdateReady(VersionInfo versionInfo) {
                // 토스트/팝업 등 UI 알림
            }

            @Override
            public void onDownloadProgress(long bytesRead, long totalBytes,
                                           double progress, double bytesPerSecond) {
                // 진행률·속도 표시
            }
        });

archer.startAutoUpdate();

앱이 종료되면 Shutdown Hook이 BootstrapLauncher를 독립 프로세스로 기동하여 기존 JAR을 백업한 뒤 신규 JAR으로 교체합니다. 실패 시 .bak에서 복원합니다.


원격 API 응답 형식

{
  "latestVersion": "1.2.0",
  "minRequiredVersion": "1.0.0",
  "downloadUrl": "https://example.com/releases/app-1.2.0.jar",
  "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "checksumAlgorithm": "SHA-256",
  "releaseNotes": "버그 수정 및 성능 향상"
}

주요 설정

설정 기본값 설명
networkTimeout 5초 버전 체크 타임아웃
downloadTimeout 30분 패치 다운로드 타임아웃
maxRetries 3 네트워크 실패 재시도 횟수
tempDirectory temp/archer_downloads 패치 임시 저장 경로
restartCommand 자동 감지 jpackage 네이티브 실행 파일 등

상세 요구사항: autoupdate/REQUIREMENTS.md


빌드 / 테스트

./gradlew :autoupdate:build
./gradlew :autoupdate:test

Copyright © 2026 Elex Project. All rights reserved.