2016-04-19 23 views
1

Ich wollte vermeiden, verschiedene Konfigurationen zu erstellen, weil ich möchte, dass viele verschiedene Verhaltensweisen mit meinen Abhängigkeiten verbunden sind, nicht nur diese.Wie können Abhängigkeiten mit Gradle zu verschiedenen Orten exportiert werden?

So dank ‚ext‘ Eigenschaften ich in der Lage bin, meine eigenen Daten zu den Abhängigkeiten gefunden:

runtime 'org.apache.logging.log4j:log4j-api:2.5' 
runtime 'org.apache.lucene:lucene-core:5.4.1' 
runtime('hsqldb:hsqldb:1.8.0.10') { ext.exportTo = 'jdbc' } 

Jetzt möchte ich es nutzen, die Abhängigkeiten in ‚libs /‘ zu kopieren standardmäßig und ' libs/$ {exportTo}/'wenn exportTo angegeben ist.

task copyRuntimeLibs(type: Copy) { 
    into "build/dependencies" 
    from configurations.runtime 
} 

Also die Arbeit zu tun Ich versuche, eine dynamisch erstellte Konfiguration für die besonderen Abhängigkeiten und eine dynamisch erstellte Aufgabe zu erstellen, die ich auf die Hauptaufgabe ‚copyRuntimeLibs‘ verlinken:

configurations.runtime.allDependencies.withType(ExternalModuleDependency).each { d -> 
    if (d.hasProperty("exportTo")) { 
    def key = "${d.group}:${d.name}:${d.version}" 
    def configname = "config-${key}" 

    def c = project.configurations.create(configname) 
    c.getDependencies().add(d) 

    def task = task "task-${key}"(type: Copy) { 
     into "build/dependencies/${d.ext.exportTo}" 
     from c 
    } 
    project.tasks.add(task) 
    copyRuntimeLibs.dependsOn task 
    } 
} 

Die dynamischen Aufgaben werden also ausgeführt, aber nichts wird kopiert. Wenn ich ein 'eachFiles' zum Debuggen hinzufüge, geht es nicht dorthin.

Irgendwelche Hinweise?

Antwort

0
task copyRuntimeLibs 

copyRuntimeLibs << { 
    configurations.runtime.allDependencies.withType(ExternalModuleDependency).each { d -> 
    def exportFolder = 'build/dependencies' 
    def exportSub = '' 
    if (d.hasProperty("exportTo")) { 
     exportSub = d.ext.exportTo 
    } 
    def key = "${d.group}:${d.name}:${d.version}" 
    def c = project.configurations.create("config-${key}") 
    c.getDependencies().add(d) 

    copy { 
     from c 
     into "${exportFolder}/${exportSub}/" 
    } 
    } 
} 
Verwandte Themen