A Gradle 8.9 / Java 11 desktop client for browsing, uploading, downloading, and deleting artifacts on an Artifactory 7 server.
| Tool | Tested version | Notes |
|---|---|---|
| JDK | 11.0.17 (HotSpot) | Needed only for building; packaged app bundles its own JRE. |
| Gradle wrapper | Included (gradlew, gradlew.bat) – Gradle 8.9 all |
Always invoke Gradle through the wrapper. |
| Windows helper | Launch4J 3.0.6 (pulled by plugin) | Wraps the runtime image in a .exe. |
| Artifactory | 7.33.2 OSS | Default base URL is http://localhost:8082/artifactory. |
artifactorygui/
├─ settings.gradle
├─ build.gradle
├─ gradle/libs.versions.toml
│
├─ backend/ ← REST + JSON client
│ └─ src/main/java/…/backend/
│
├─ frontend/ ← JavaFX UI
│ ├─ src/main/java/…/frontend/
│ └─ src/main/resources/…/frontend/
│
└─ packaging/ ← icons, helper scripts
# macOS / Linux
./gradlew :frontend:run
# Windows
gradlew.bat :frontend:runFirst launch prompts for an API key and stores it via java.util.prefs.
| Task | Output | Use‑case |
|---|---|---|
./gradlew :frontend:runtime |
frontend/build/image/ folder with custom JRE and launch scripts. |
Dev, Linux users. |
./gradlew :frontend:runtimeZip |
frontend/build/image-zip/artifactorygui.zip |
Single-file distribution. |
./gradlew createExe (Windows) |
frontend/build/launch4j/ArtifactoryGUI.exe |
Double‑click exe + bundled JRE. |
frontend/build.gradle must include:
plugins {
id 'edu.sc.seis.launch4j' version '3.0.6'
}
launch4j {
mainClassName = application.mainClass
outfile = 'ArtifactoryGUI.exe'
icon = "${projectDir}/../packaging/win-icon.ico" // optional
bundledJrePath = "$buildDir/image/jre"
}Run:
.\gradlew createExeDistribute ArtifactoryGUI.exe with the image/ folder.
./gradlew :frontend:runtimeZip
unzip frontend/build/image-zip/artifactorygui.zip
./bin/ArtifactoryGUI # ensure executable bit- Base URL – hard‑coded in
ArtifactoryClient.java(http://localhost:8082/artifactory). - Stored API key – Java Preferences
Windows:HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\example�rtifactorygui
Linux:~/.java/.userPrefs/com/example/artifactorygui
Remove the key to force re‑login.
| Symptom | Fix |
|---|---|
HBox is not a valid type |
Ensure the import line exists in FXML. |
| Gradle “VERSION_CATALOGS” error | Delete enableFeaturePreview('VERSION_CATALOGS') in settings.gradle. |
| 401/403 on tree expand | Verify API key and base URL. |