All Downloads are FREE. Search and download functionalities are using the official Maven repository.

netflix.nebula.dependency.recommender.RecommendationsConflictResolvedStrategy Maven / Gradle / Ivy

Go to download

Allows projects to leave off version numbers in dependencies section and have versions recommended by other sources

There is a newer version: 12.5.1
Show newest version
package netflix.nebula.dependency.recommender;

import org.gradle.api.artifacts.Dependency;
import org.gradle.api.artifacts.DependencyResolveDetails;

import java.util.ArrayList;
import java.util.List;

/**
 * Recommendations are conflict resolved against transitive dependencies.  In the event that a transitive dependency
 * has a higher version of a library than a recommendation, the recommendation only wins if there is a first order
 * recommend-able dependency.
 */
public class RecommendationsConflictResolvedStrategy extends RecommendationStrategy {

    private List firstOrderDepsWithoutVersions = new ArrayList<>();

    @Override
    public void inspectDependency(Dependency dependency) {
        if (dependency.getVersion() == null || dependency.getVersion().isEmpty()) {
            firstOrderDepsWithoutVersions.add(dependency.getGroup() + ":" + dependency.getName());
        }
    }

    @Override
    public boolean recommendVersion(DependencyResolveDetails details, String version) {
        if (version != null && firstOrderDepsWithoutVersions.contains(getCoord(details))) {
            details.useVersion(version);
            return true;
        }
        return false;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy