2014-07-21 33 views
7

mamy wielu projektów Gradle konfiguracji z jednym słoiku Java dla każdego podprojektu:skopiować wszystkie utworzone i osób trzecich słoiki w jednym folderze z Gradle

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

teraz, ponieważ jesteśmy tworzenia aplikacji WebStart Java , musimy podpisać wszystkie słoiki projektu, a także wszystkie biblioteki (zależności) innych firm.

Moje podejście polegało teraz na skopiowaniu wszystkich zbudowanych podprojektów i wszystkich bibliotek zewnętrznych do osobnego folderu i wykonanie zadania do podpisania. Jednak nie mogę skopiować słoików.

To było moje podejście w build.gradle root:

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

razem z:

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

Potem próbował wykonać Gradle SIGNALL. Jednak mogę znaleźć pusty słoik z nazwą projektu głównego w folderze webstart/lib.

Może moje podejście jest całkowicie błędne. Co muszę zrobić, aby skopiować wszystkie utworzone słoiki stron trzecich do jednego folderu?

Odpowiedz

10

Dodaj ten kawałek kodu do głównego build.gradle i powinno działać prawidłowo:

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

Cześć, dzięki za odpowiedź, to działa świetnie! Tylko jedna rzecz: teraz słoiki wszystkich moich własnych projektów są kopiowane zarówno do dest, jak i do dest/lib. Na przykład. jeśli podprojekt-a spełnia podprojekt-b, to pod-projekt-b.jar jest kopiowany zarówno do dest, jak i do dest/lib. W jaki sposób zapobiegać kopiowaniu współdzielonych projektów również do dest/lib? – Dominic