• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Mettre en ligne son mod au format maven via ftp

    Java & outils de développement
    forgegradle
    4
    8
    2952
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • SCAREX
      SCAREX dernière édition par robin4002

      Sommaire

      • Introduction
      • Pré-requis
      • Code
      • Crédits

      Introduction

      Vous voulez mettre en ligne vos mods sur votre site web via ftp ? Alors vous êtes au bon endroit.

      Pré-requis

      • Installer l’espace de travail pour Eclipse

      Code

      Tout d’abord, nous allons créer un fichier (ici je l’appelerai private.properties) pour y stocker notre identifiant ftp ainsi que le mot de passe (vous n’êtes pas obligé de le mettre dans un fichier à part mais si vous voulez mettre vos sources sur github, vous aurez juste à ajouter le fichier au .gitignore) :

      Voici le contenu du fichier private.properties

      ftp_adress=<l'adresse pour vous connecter via ftp>ftp_user=<votre identifiant>ftp_pw=<votre mot de passe>
      

      NOTE : vous pouvez mettre ce que vous voulez avant le “=” tant que vous mettez le même par la suite

      Maintenant nous allons devoir récupérer le contenu de ce fichier (de la même façon que dans le tutoriel Utiliser gradle pour gérer les dépendances) :

      ext.privateConfigFile = file 'private.properties' // le nom de votre fichier
      
      privateConfigFile.withReader {
          def p = new Properties()
          p.load(it)
          project.ext.privateConfig = new ConfigSlurper().parse p // privateConfig sera le nom utilisé pour accéder aux valeurs
      }
      

      Pour pouvoir utiliser la librairie de ant, nous allons la déclarer en dépendance :

      configurations {
          ftpAntTask
      } // pour spécifier que l'on ne veut pas l'ajouter dans le classpath d'eclipse mais bien dans le script
      
      dependencies {
          ftpAntTask("org.apache.ant:ant-commons-net:1.9.4") {
              module("commons-net:commons-net:1.4.1") {
                  dependencies "oro:oro:2.0.8:jar"
              }
          } // on ajoute la dépendance avec la configuration déclarée juste au-dessus
      } // vous pouvez placer ce code dans le block dependencies déjà créé au préalable, moi je préfère le mettre à part pour organiser les choses
      

      Il va nous falloir une fonction pour publier via ftp :

      void ftp(Map args, Closure antFileset = {}) {
          ant {
              taskdef(name: 'ftp', classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', classpath: configurations.ftpAntTask.asPath) // On utilise la dépendance délcarée au-dessus
              Map ftpArgs = args + [
                                      verbose : 'yes',
                                      server  : privateConfig.ftp_adress, // on indique le serveur
                                      userid  : privateConfig.ftp_user, // l'utilisateur
                                      password: privateConfig.ftp_pw // le mot de passe
              ]
              delegate.ftp(ftpArgs) { // on exécute la commande
                  antFileset.delegate = delegate
                  antFileset()
              }
          }
      }
      

      Maintenant nous allons créer un repo maven local pour ensuite le publier via ftp, personnellement j’ai choisis de le mettre dans build/repo :

      apply plugin: 'maven-publish' // on utilise le plugin maven-publish
      
      publishing {
          publications {
              universal(MavenPublication) { // On publie le jar de base (ici universal n'a pas d'importance)
                  artifact jar // on utilise l'archive jar
              }
              dev(MavenPublication) { // Si vous avez vu le bonus du tutoriel [Utiliser gradle pour gérer les dépendances](http://www.minecraftforgefrance.fr/showthread.php?tid=2689), vous pouvez publier la version déobfusquée
                  artifact deobfJar
              }
              sources(MavenPublication) { // Et la version source (si vous voulez que gradle télécharge automatiquement les sources, il faut utiliser le classifier "sources")
                  artifact sourceJar
              }
          }
      
          repositories {
              maven {
                  url "$buildDir/repo" // on le publie en local
              }
          }
      }
      

      Et pour finir, il faut envoyer tout ça avec une tâche :

      task upload(dependsOn: 'publish') << { // ici j'envoie dans le dossier repo de mon ftp
          ftp(action: 'mkdir', remotedir: "repo") // on crée le dossier où on va mettre les fichiers
          ftp(action: 'send', remotedir: "repo") { // On envoie les fichiers
              fileset(dir: "$buildDir/repo") // On envoie ceux du dossier repo
          }
      }
      

      Voilà ! Il ne vous reste plus qu’à faire gradlew build upload et tout sera publié !

      D’accord c’est bien gentil ton truc mais comment on fait pour que gradle télécharge automatiquement mon mod avec les sources ?

      Et bien comme dans mon dernier tutoriel, vous avez juste à ajouter ceci dans le block dependencies :

      maven {
         name "<le nom de votre repo>"
         url "<l'url de votre site, chez moi : scarex.fr/repo>"
      }
      

      Voici ce à quoi devrait/pourrait ressembler votre fichier build.gradle :

      // Config
      
      ext.privateConfigFile = file 'private.properties'
      
      privateConfigFile.withReader {
          def p = new Properties()
          p.load(it)
          project.ext.privateConfig = new ConfigSlurper().parse p
      }
      
      // Upload
      
      configurations {
          ftpAntTask
      }
      
      dependencies {
          ftpAntTask("org.apache.ant:ant-commons-net:1.9.4") {
              module("commons-net:commons-net:1.4.1") {
                  dependencies "oro:oro:2.0.8:jar"
              }
          }
      }
      
      void ftp(Map args, Closure antFileset = {}) {
          ant {
              taskdef(name: 'ftp',
                      classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP',
                      classpath: configurations.ftpAntTask.asPath)
              Map ftpArgs = args + [
                                      verbose : 'yes',
                                      server  : privateConfig.ftp_adress,
                                      userid  : privateConfig.ftp_user,
                                      password: privateConfig.ftp_pw
              ]
              delegate.ftp(ftpArgs) {
                  antFileset.delegate = delegate
                  antFileset()
              }
          }
      }
      
      task mavenUpload(dependsOn: 'publish') << {
          ftp(action: 'mkdir', remotedir: "repo")
          ftp(action: 'send', remotedir: "repo") {
              fileset(dir: "$buildDir/repo")
          }
      }
      
      apply plugin: 'maven-publish'
      
      publishing {
          publications {
              universal(MavenPublication) {
                  artifact jar
              }
              dev(MavenPublication) {
                  artifact deobfJar
              }
              sources(MavenPublication) {
                  artifact sourceJar
              }
          }
      
          repositories {
              maven {
                  url "$buildDir/repo"
              }
          }
      }
      

      Crédits

      Rédaction :

      • SCAREX

      Correction :

      • Toutoune1008

      Creative Commons
      Ce tutoriel de SCAREX publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      retourSommaire des tutoriels

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Si un correcteur pouvait passer par ici ça serait génial.

        1 réponse Dernière réponse Répondre Citer 0
        • Folgansky
          Folgansky Correcteurs dernière édition par

          Déjà fait.

          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwing
            BrokenSwing Moddeurs confirmés Rédacteurs dernière édition par

            Je crois qu’il manque juste un mot là où il dit “Maintenant nous créer un repo …”

            1 réponse Dernière réponse Répondre Citer 0
            • Folgansky
              Folgansky Correcteurs dernière édition par

              Merci, d’où l’importance de la deuxième relecture 😃

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                Par contre ça a explosé le formatage 😕
                Je corrige ça.

                1 réponse Dernière réponse Répondre Citer 0
                • SCAREX
                  SCAREX dernière édition par

                  C’est toujours très difficile d’écrire avec une seule main

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    J’imagine ^^ Mais la je parlais de la correction. En éditant le message les balises bt ont sautés, elles faisaient 2 de hauteur.

                    1 réponse Dernière réponse Répondre Citer 0
                    • Référencé par  robin4002 robin4002 
                    • Référencé par  robin4002 robin4002 
                    • Référencé par  robin4002 robin4002 
                    • 1 / 1
                    • Premier message
                      Dernier message
                    Design by Woryk
                    Contact / Mentions Légales

                    MINECRAFT FORGE FRANCE © 2018

                    Powered by NodeBB