2016-12-20 20 views
0

私はプラグインからmysqlまたはpostgresドライバが必要なタスクを持っています。 は現在、私はFooPlugin::apply方法このにハードコード:build.gradeスクリプトからの依存関係をプラグインタスクに追加するにはどうすればいいですか?

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

しかし、私は彼らのドライバを選択し、ユーザーを聞かせしたいと思います。 このため、私は、これらの依存関係をタスクに動的に注入するプラグインを適用するgradle buildスクリプト(build.gradle)からすべての依存関係を取得したいと考えています。解決済み

私はこの試みたコード

の作品を追加:エラー以下project.afterEvaluateブロックに入れていない場合は

class FooPlugin implements Plugin<Project>{ 

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

が発生します

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

答えて

1

私は」あなたの達成しようとしていることを正確には分からないので、私はカップルのことを推測するつもりです。

依存関係を追加しようとしているように見えるか、依存関係に基づいて反応します。私はあなたがどちらでも達成できると思う。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

ありがとう@JBirdVegasそれは面白いです解決策を見てみましょう戦略 – bioinfornatics

関連する問題