私は依存関係をチェックするための私のカスタム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()
を呼び出しているようにあなたが
の
beforeResolve
を使用してそのロジックを延期してください。はい、まったく正しいです。もし私がビルドスクリプトの終わりに私のpliginを適用すると、すべて正常に動作します。ありがとうございました –