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
README.md 3.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • Vercingecodix's avatar
    Vercingecodix committed
    <p align="center">
      <img src="./logo.png" alt="logo" width="100"/>
    </p>
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    # Fetch Published Maven Zips Plugin
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ![Plugin](https://img.shields.io/badge/plugin--gradle-fetch--published--maven--zips-success)
    
    ![Version](https://img.shields.io/badge/latest-2.1.1-8A2BE2)
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Plugin Gradle pour **télécharger automatiquement des archives ZIP publiées sur un repository Maven**, les extraire localement, et nettoyer les anciennes versions.
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    > ⚡️ Idéal pour maintenir une documentation versionnée issue d’artefacts Maven (`zipped-1.2.3.zip`, etc.).
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ## 🧩 Installation
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Ajoute le dépôt dans `settings.gradle.kts` :
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```kotlin
    pluginManagement {
        repositories {
            maven(uri("https://lab.frogg.it/api/v4/projects/1987/packages/maven"))
        }
    }
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Applique le plugin dans `build.gradle.kts` :
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    ```kotlin
    plugins {
    
        id("dev.arvernes.fetch-published-maven-zips") version "2.1.1"
    
    Vercingecodix's avatar
    Vercingecodix committed
    }
    ```
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    ```toml
    
    fetch-published-maven-docs = { id = "dev.arvernes.fetch-published-maven-zips", version = "2.1.1" }
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ## ⚙️ Configuration
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Configure le plugin dans le bloc `fetchMavenZips` :
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```kotlin
    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
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
        excludeVersions = listOf("0.1.0", "0.1.1") // optionnel
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
        outputTempPath = "build/tmp/docs"           // dossier temporaire pour les ZIP
    
        outputExtractedPath = "build/docs/versions" // destination finale
    
    Vercingecodix's avatar
    Vercingecodix committed
    }
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```bash
    ./gradlew fetchPublishedMavenZips
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Cette tâche effectue les actions suivantes :
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    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.
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    ## 🔐 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 :
    
    ```properties
    # gradle.properties (exclu du versionnement)
    MY_MAVEN_TOKEN=ton_token_secret
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    ```bash
    export MY_MAVEN_TOKEN=ton_token_secret
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ## 📁 Exemple d’arborescence générée
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```
    build/docs/versions/
    ├── 1.0.0/
    │   └── index.html
    ├── 1.1.0/
    │   └── index.html
    └── ...
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ## 🧪 Exemple complet
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```kotlin
    plugins {
        id("dev.arvernes.fetch-published-maven-zips") version "1.0.0"
    }
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
        groupId = "dev.arvernes"
        artifactId = "secure-password"
        zipBaseName = "htmlDoc"
    
        mavenRepository = "https://lab.frogg.it/api/v4/projects/1234/packages/maven"
        mavenTokenProperty = "FROGGIT_TOKEN"
    
    Vercingecodix's avatar
    Vercingecodix committed
        outputTempPath = "build/tmp/docs"
        outputExtractedPath = "build/docs/versions"
    }
    ```
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ---
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ## 🧱 Architecture
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    Le plugin suit une architecture **hexagonale** :
    
    Vercingecodix's avatar
    Vercingecodix committed
    
    
    Vercingecodix's avatar
    Vercingecodix committed
    ```
    .
    ├── 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
    ```