2016-12-20 1 views
0

Ich habe eine Aufgabe von meinem Plugin, die mysql oder postgres Treiber benötigt. zur Zeit ich in FooPlugin::apply Methode fest einprogrammiert dieses:Wie fügt man zu einer Plugin-Aufgabe die Abhängigkeiten hinzu, die vom Skript build.grade kommen?

configuration.dependencies.add(project.dependencies.create('mysql:mysql-connector-java:5.1.34')) 

Aber ich möchte Benutzer lassen, ihre Fahrer zu wählen. Also für diese würde ich gerne alle Abhängigkeiten von Gradle Build-Skript (build.gradle) greifen, die mein Plugin, um diese Abhängigkeiten dynamisch auf die Aufgabe zu injizieren.

Entschlossen: ein Stück Code hinzufügen

ich das versucht:

class FooPlugin implements Plugin<Project>{ 

    @Override 
    void apply(Project project) { 
     project.afterEvaluate { 
      def configuration = project.configurations.create('bar') 
      configuration.extendsFrom(project.configurations.findByName('compile')) 
      … 
     } 
    } 
} 

Wenn Sie nicht in project.afterEvaluate Block unter Fehler setzen Sie angehoben:

Cannot change dependencies of configuration ':bar' after it has been resolved. 

Antwort

1

I‘ Ich bin mir nicht sicher, was genau Sie erreichen wollen, also werde ich ein paar Dinge erraten.

Sieht aus, als ob Sie versuchen, eine Abhängigkeit hinzuzufügen oder basierend auf einer hinzugefügten Abhängigkeit zu reagieren. Ich denke, Sie erreichen können entweder durch die resolutionStrategy

project.configurations { 
    compile.resolutionStrategy { 
     // adds a dependency to a project, always. 
     force 'commons-io:commons-io:2.5' 
     // loop through all the dependencies to modify before resolution 
     eachDependency { DependencyResolveDetails details -> 
      // here you can change details about a dependency or respond however needed 
      if (details.requested.group == 'mysql' && details.requested.name == 'mysql-connector-java') { 
       // for example we can force a specific version 
       details.useVersion '5.1.34' 
      } 
      // you could also add a if block for postgres if needed 
     } 
    } 
} 
+0

Dank @JBirdVegas es interessant ist, ich einen Blick auf resolutionStrategy nehmen – bioinfornatics

Verwandte Themen