Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects

logo

Fetch Published Maven Zips Plugin

Plugin 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 :

  1. Supprime les anciennes archives extraites (outputExtractedPath)
  2. Récupère la liste des versions disponibles sur le repository Maven
  3. Télécharge chaque fichier zipped-<version>.zip
  4. Décompresse chaque archive dans outputExtractedPath
  5. 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