2017-08-15 3 views
1

Je dispose d'un pipeline de génération dans lequel je veux exécuter un fichier jar particulier (avec des arguments) après l'avoir copié dans un dossier distinct de la liste des dépendances.Gradle - Exporter la propriété après la fin de la tâche de copie

Actuellement, je fais ce qui suit:

task copyToLib(type: Copy, dependsOn: classes) { 
    into "$buildDir/server" 
    from(configurations.compile) { 
     include "webapp-runner*" 
    } 
    ext.serverPath = fileTree("$buildDir/server/").include("webapp-runner-*.jar").getSingleFile() 
} 

task run(type: Exec, dependsOn: [copyToLib, war]) { 
    mustRunAfter copyToLib 
    executable 'java' 
    args '-jar', copyToLib.serverPath, war.archivePath, '--port', "$port" 
} 

Mais il échoue avec Expected directory '...' to contain exactly one file, however, it contains no files. depuis que je devine serverPath est réglé lors de la phase de configuration lorsque le fichier n'a pas été copié. Comment puis-je contourner cela?

Répondre

1

Vous tombez sur l'erreur courante d'exécution de la logique dans la phase configuration lorsque vous devez l'exécuter dans la phase execution.

Essayez cette

task copyToLib(type: Copy, dependsOn: classes) { 
    ... 
    doLast { 
     ext.serverPath = ... 
    } 
} 

Si elle était moi, je serverPath l'intérieur run calculer plutôt que dans copyToLib. Peut-être pourriez-vous utiliser un closure pour retarder le calcul.

Par exemple:

task run(type: Exec, dependsOn: [copyToLib, war]) { 
    def pathClosure = { 
     fileTree("$buildDir/server/").include("webapp-runner-*.jar").singleFile 
    } 
    mustRunAfter copyToLib 
    executable 'java' 
    args '-jar', pathClosure, war.archivePath, '--port', "$port" 
} 
+0

J'ai essayé mais ma tâche d'exécution se plaint que la propriété n'existe pas (probablement depuis 'args' fonctionne en phase de configuration) – user3690467

+0

Voir ma mise à jour, espérons-le, args accepte une fermeture –

+0

Erreur: Impossible d'accéder à jarfile build_6ya3c8i4opyc4ki50kxakvuxg $ _run_closure7 $ _closure13 @ 61f7c533 – user3690467