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 Version

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 :

  1. Nettoyage des anciennes archives extraites (outputExtractedPath).
  2. Récupération des versions disponibles sur le repository Maven.
  3. Téléchargement des archives zipped-<version>.zip.
  4. Décompression des archives dans outputExtractedPath.
  5. 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