Fetch Published Maven Zips Plugin
Plugin Gradle pour télécharger automatiquement des archives ZIP publiées sur un repository Maven, les extraire localement, et nettoyer les anciennes versions.
⚡ Idéal pour maintenir une documentation versionnée issue d’artefacts Maven (
zipped-1.2.3.zip
, etc.).
🧩 Installation
Ajoute le dépôt dans settings.gradle.kts
:
pluginManagement {
repositories {
maven(uri("https://lab.frogg.it/api/v4/projects/1987/packages/maven"))
}
}
Applique le plugin dans build.gradle.kts
:
plugins {
id("dev.arvernes.fetch-published-maven-zips") version "2.1.0"
}
ou via libs.versions.toml
:
fetch-published-maven-docs = { id = "dev.arvernes.fetch-published-maven-zips", version = "2.1.0" }
⚙️ Configuration
Configure le plugin dans le bloc fetchMavenZips
:
fetchMavenZips {
groupId = "dev.arvernes"
artifactId = "ma-lib"
zipBaseName = "htmlDoc" // par défaut : "zipped"
mavenRepository = "https://my.maven.repo/releases"
mavenTokenProperty = "MY_MAVEN_TOKEN" // optionnel, par défaut : null
excludeVersions = listOf("0.1.0", "0.1.1") // optionnel
outputTempPath = "build/tmp/docs" // dossier temporaire pour les ZIP
outputExtractedPath = "build/docs/versions" // destination finale
}
📦 Utilisation
./gradlew fetchPublishedMavenZips
Cette tâche effectue les actions suivantes :
- Nettoyage des anciennes archives extraites (
outputExtractedPath
). - Récupération des versions disponibles sur le repository Maven.
- Téléchargement des archives
zipped-<version>.zip
. - Décompression des archives dans
outputExtractedPath
. - Suppression des fichiers
.zip
temporaires.
🔐 Gestion sécurisée du token
Le token d’authentification est récupéré depuis :
- Une variable d'environnement (
MY_MAVEN_TOKEN
par défaut). - Ou une propriété Gradle définie dans
gradle.properties
local (à ne pas commiter).
Exemple :
# gradle.properties (exclu du versionnement)
MY_MAVEN_TOKEN=ton_token_secret
ou
export MY_MAVEN_TOKEN=ton_token_secret
📁 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"
}
fetchMavenZips {
groupId = "dev.arvernes"
artifactId = "secure-password"
zipBaseName = "htmlDoc"
mavenRepository = "https://lab.frogg.it/api/v4/projects/1234/packages/maven"
mavenTokenProperty = "FROGGIT_TOKEN"
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