2017-01-26 17 views
0

私は依存関係をチェックするための私のカスタムJava gradleプラグインを書いています。また、私は Spring Gradle Dependency Managment pluginを適用します。しかし、私はこのプラグインから管理ライブラリのバージョンのリストを取ることができません。カスタムプラグイン内のSpring Dependencies Managment Pluginから、すべてのマネージドバージョンの依存関係をどのように取ることができますか?

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.springframework:spring-core:4.2.5.RELEASE' 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

しかし、私の仕事を適用した後に、それは常に空のマップを返します。Springフレームワークを含め、私が使用して私のテストプロジェクトで

import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension; 
import org.gradle.api.Action; 
import org.gradle.api.Plugin; 
import org.gradle.api.Project; 
import org.gradle.api.artifacts.*; 

import java.util.Map; 

public class MyDependencyManagementPlugin implements Plugin<Project> { 

    public void apply(Project project) { 

     for (Configuration config : project.getConfigurations()) { 

      config.resolutionStrategy(
        strategy -> { 
         final DependencyManagementExtension container = project.getExtensions().getByType(DependencyManagementExtension.class); 
         Map<String, String> managedVersions = container.getManagedVersions(); 
         System.out.println("Libraries from Spring Dependency Management Plugin: " + managedVersions.toString()); 

         strategy.eachDependency(new Action<DependencyResolveDetails>() { 
          @Override 
          public void execute(DependencyResolveDetails dependencyResolveDetails) { 

           System.out.println("!!!! " + dependencyResolveDetails.getRequested().getGroup() + ':' + dependencyResolveDetails.getRequested().getName() + ':' + dependencyResolveDetails.getRequested().getVersion() + " -> " + dependencyResolveDetails.getTarget().getVersion()); 

          } 
         }); 
         strategy.failOnVersionConflict(); 
        } 
      ); 
     } 
    } 
} 

:私は次のコードを使用します。また、ioのSpring Dependency ManagementプラグインからdependencyManagementタスクを呼び出すと、空のリストも返されます。 私のカスタムプラグインからetManagedVersions()を呼び出さないと、ioのSpring Dependency Managementプラグインが正しく動作します。dependencyManagementタスク

は何のは、任意の依存関係の管理を設定する機会があった前に、あなたは getManagedVersions()を呼び出しているようにあなたが

答えて

1

ですねありがとうございます。 Configuration

+0

beforeResolveを使用してそのロジックを延期してください。はい、まったく正しいです。もし私がビルドスクリプトの終わりに私のpliginを適用すると、すべて正常に動作します。ありがとうございました –

関連する問題