Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Utiliser maven package sur un projet java dans un script python

0 votes

Le but est de générer un jar côté java (ne pas tapper svp), et de le copier dans un dossier spécifique côté android, c'est ce que ce script fait (presque) :

import os
import shutil

directory = "Android/Positron/app/libs"


# Si le folder libs n'existe pas dans le projet android, on le crée
if not os.path.exists(directory):
    os.makedirs(directory)

# Si le jar existe dans le projet android on le supprime
try:
    os.remove("Android/Positron/app/libs/entities-1.0-SNAPSHOT.jar")
    print("le jar dans l'android est supprimé")
except:
    print("ya pa de jar dans ton android tête de naz")
    pass

# Si le jar existe dans le target côté java, on le copie dans les libs du projet android
try:
    shutil.copyfile('entities/target/entities-1.0-SNAPSHOT.jar', 'Android/Positron/app/libs/entities-1.0-SNAPSHOT.jar')
    print("la copie du nouveau jar généré (si t'as pas oublié de mvn package à partir de entities comme un naab) a été effectué")
except:
    print("la copie du jar côté java vers l'android a foiré")

Ce script agit comme si le jar côté projet java était déjà généré, maintenant la question est de savoir est-ce qu'il est possible d'exécuter la commande

mvn package

dans le dossier java pour généré le .jar dans un script python peut-on faire et ainsi pouvoir l'intégrer dans mon script histoire d'automatiser tout ça

demandé 30-Mai-2016 par boblinux (3,092 points)
edité 30-Mai-2016 par boblinux

1 Réponse

+1 vote
 
Meilleure réponse

j'utilise subproccess.Popen() pour ce genre de chose

je te fais grâce du try :)

    import shlex
    cmd_line = '/usr/bin/soffice --headless  --convert-to pdf {0}'.format(filename)
    cmd = shlex.split(cmd_line)
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
    stdoutdata, stderrdata = proc.communicate()

cela dit dans "le monde java" on utilise plutôt cruisecontrol pour tout automatiser, du jar à l'ear, au targz etc

sinon en guise d'outils d'automatisation pour ta copie sur android, ansible sait faire ca au poil ;) et ca sera beaucoup beaucoup plus clair et maintenable que tes try/except

répondu 30-Mai-2016 par foxmask (2,888 points)
sélectionné 31-Mai-2016 par boblinux

mais ils sont tout beau mes try except ! (on sent le mec qui n'a passé plus de 30 secondes sur son script maison)

Je parlais de mes try dans le code d'origine puisque j'ai mis le code dans ;)

merci de m'avoir donné du travail en plus, c'est sympa ;)

...