2013-04-22 18 views
5

Mamy starą wersję playframework 1.2.x, w której kopiujemy wszystkie słoiki do projektu/lib, aby można je było używać. UWIELBIAMY kopiować wszystkie słoiki z materiałami źródłowymi, aby po zakończeniu eklipsyfikacji odtwarzać wszystkie źródła zewnętrzne. Czy istnieje sposób, aby to zrobić z gradle?jak skopiować wszystkie słoiki źródłowe za pomocą gradle

i mam na myśli wszystkie słoiki źródłowe, które zostały pobrane, gdy uruchomiłem gradle eclipse, gdy zobaczyłem, że pobierają lokalizacje pamięci podręcznej. Mamy gradle eclipse wywołujące grę eclipsify dla nas w jednym projekcie, więc możemy w 100% po prostu użyć gradle.

dzięki, Dean

Odpowiedz

5

to nie jest tak proste, jak oczekiwano. Następujące kopie snippet słoiki źródłem wszystkich zależnościach środowiska wykonawczego (+) z kompilacji projektu Java w określonym folderze:

task copySourceJars(type:Copy){ 
     def deps = configurations.runtime.incoming.dependencies.collect{ dependency -> 
      dependency.artifact { artifact -> 
        artifact.name = dependency.name 
        artifact.type = 'source' 
        artifact.extension = 'jar' 
        artifact.classifier = 'sources' 
       } 
      dependency 
     } 
     from(configurations.detachedConfiguration(deps as Dependency[]).resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL)) 
     into('sourceLibs') 
    } 

Powodem używamy lenientConfiguration o to, że nie chcemy, by upaść, jeśli artefaktu źródłowego nie można rozwiązać. Może być bardziej elegancki sposób, ale nie zagłębiłem się w to.

nadzieję, że to pomaga,

René

+0

Wygląda na to, że w skrypcie występuje błąd, "resolvedConfiguration" jest napisane dwa razy w instrukcji 'from (..)'. Co więcej, te źródła pobierania kodu tylko dla bezpośrednich zależności, nie dla tranzytu, zobacz moją odpowiedź. – eskatos

+0

@eskatos Usunąłem zduplikowaną 'resolvedConfiguration'. – sschuberth

4

Rene odpowiedź ściągnie źródła słoików bezpośrednich zależności, a nie źródła słoików wszystkich transitives zależności.

Oto zadanie, które rade:

task copySourceJars(type: Copy) { 
    def sources = configurations.runtime.resolvedConfiguration.resolvedArtifacts.collect { artifact -> 
    project.dependencies.create([ 
     group: artifact.moduleVersion.id.group, 
     name: artifact.moduleVersion.id.name, 
     version: artifact.moduleVersion.id.version, 
     classifier: 'sources' 
    ]) 
    } 
    from configurations.detachedConfiguration(sources as Dependency[]) 
    .resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL) 
    into file('some-directory/') 
} 

Można wtedy zrobić ten sam dla Javadocs słoików zmieniając classifier do javadoc.

Powiązane problemy