2014-07-21 6 views
7

wir haben einen Multi-Projekt gradle Setup mit einem Java jar für jedes Teilprojekt:Kopieren Sie alle erstellt und von Drittanbietern Gläser in einen einzigen Ordner mit Gradle

- root-project 
    |-sub-project-a 
    |-sub-project-b 
    |-sub-project-c 

Jetzt, da wir eine Java Webstart-Anwendung erstellen , müssen wir alle Projekt-Jars sowie alle Bibliotheken von Drittanbietern (Abhängigkeiten) signieren.

Meine Vorgehensweise bestand nun darin, alle erstellten Teilprojekt-JAR-Dateien und alle Bibliotheken von Drittanbietern in einen separaten Ordner zu kopieren und eine Aufgabe zum Signieren auszuführen. Allerdings kann ich die Gläser nicht kopieren.

Das war mein Ansatz in der Wurzel build.gradle:

task copyFiles(type: Copy, dependsOn: subprojects.jar) { 
    from configurations.runtime 
    from("build/libs") 
    into("webstart/lib") 
    include('*.jar') 
} 

zusammen mit:

task signAll(dependsOn: [copyFiles]) << { 
    new File('webstart/signed').mkdirs() 
    def libFiles = files { file('webstart/lib').listFiles() } 
    ... 
} 

Dann habe ich versucht gradle SIGNALL auszuführen. Ich finde jedoch nur ein leeres Jar mit dem Namen des Root-Projekts im Ordner webstart/lib.

Vielleicht ist mein Ansatz völlig falsch. Was muss ich tun, um alle erstellten & Thrid-Party-Gläser in einen einzigen Ordner zu kopieren?

Antwort

10

dieses Stück Code zu root build.gradle hinzufügen und es sollte funktionieren:

allprojects { 
    apply plugin: 'java' 
    repositories { 
     mavenCentral() 
    } 
} 

task copyJars(type: Copy, dependsOn: subprojects.jar) { 
    from(subprojects.jar) 
    into project.file('dest') 
} 

task copyDeps(type: Copy) { 
    from(subprojects.configurations.runtime) 
    into project.file('dest/lib') 
} 

task copyFiles(dependsOn: [copyJars, copyDeps]) 
+3

Hallo, danke für die Antwort, dies funktioniert super! Nur eines: Jetzt werden die Jars all meiner eigenen Projekte, die geteilt werden, sowohl nach dest als auch nach dest/lib kopiert. Z.B. Wenn das Teilprojekt-requiries-Teilprojekt-b ist, wird das Teilprojekt-b.jar sowohl nach dest als auch nach dest/lib kopiert. Gibt es eine Möglichkeit, zu verhindern, dass freigegebene Projekte in dest/lib kopiert werden? – Dominic

Verwandte Themen