Fetch Published Maven Zips Plugin
Un plugin Gradle permettant de télécharger automatiquement les archives zippées publiées sur un repository Maven, de les extraire localement, et de nettoyer les anciennes versions.
⚡ Idéal pour maintenir un dossier de documentation versionnée à partir d’artefacts Maven (
zipped-1.2.3.zip
, etc.)
🧩 Installation
Ajoute le dépôt dans ton settings.gradle.kts
:
pluginManagement {
repositories {
maven(uri("https://lab.frogg.it/api/v4/projects/1987/packages/maven"))
}
}
Et applique le plugin dans ton build.gradle.kts
:
plugins {
id("dev.arvernes.fetch-published-maven-zips") version "1.0.0"
}
ou dans libs.versions.toml
:
fetch-published-maven-docs = { id = "dev.arvernes.fetch-published-maven-zips", version = "1.0.0" }
⚙️ Configuration
Déclare la configuration dans le bloc fetchMavenZips
:
fetchMavenZips {
groupId = "dev.arvernes"
artifactId = "ma-lib"
mavenRepository = "https://my.maven.repo/releases"
zipBaseName = "htmlDoc" // par défaut : "zipped"
mavenToken = System.getenv("MY_MAVEN_TOKEN")
excludeVersions = listOf("0.1.0", "0.1.1") // optionnel
outputTempPath = "build/tmp/docs" // dossier temporaire pour les ZIP
outputExtractedPath = "build/docs/versions" // destination finale des versions extraites
}
📦 Tâche disponible
./gradlew fetchPublishedMavenZips
Cette tâche :
- Supprime les anciennes archives extraites (
outputExtractedPath
) - Récupère la liste des versions disponibles sur le repository Maven
- Télécharge chaque fichier
zipped-<version>.zip
- Décompresse chaque archive dans
outputExtractedPath
- Supprime les fichiers
.zip
temporaires
🔐 Authentification Maven
Tu peux passer un token d’authentification via :
- Une variable d’environnement (
MY_MAVEN_TOKEN
) - Ou
gradle.properties
(évite les commits accidentels)
📁 Exemple d’arborescence générée
build/docs/versions/
├── 1.0.0/
│ └── index.html
├── 1.1.0/
│ └── index.html
└── ...
🧪 Exemple complet
plugins {
id("dev.arvernes.fetch-published-maven-zips") version "1.0.0"
}
fetchMavenDocs {
groupId = "dev.arvernes"
artifactId = "secure-password"
mavenRepository = "https://lab.frogg.it/api/v4/projects/1234/packages/maven"
mavenToken = System.getenv("FROGGIT_TOKEN")
zipBaseName = "htmlDoc"
outputTempPath = "build/tmp/docs"
outputExtractedPath = "build/docs/versions"
}
🧱 Architecture
Le plugin suit une architecture hexagonale :
.
├── domain/models/ ← Modèles de config (extension, repository)
├── application/usecases/ ← Logique métier (clean, download, unzip)
├── adapters/ ← Implémentation technique (HTTP client)
└── platform/gradle/ ← Entrée plugin : FetchPublishedMavenZipsPlugin