static bool ShouldIncludeDependency(BindingConfig config, MavenArtifactConfig artifact, Dependency dependency, List <Exception> exceptions) { // We always care about 'compile' scoped dependencies if (dependency.IsCompileDependency()) { return(true); } // If we're not processing Runtime dependencies then ignore the rest if (!config.StrictRuntimeDependencies) { return(false); } // The only other thing we may care about is 'runtime', bail if this isn't 'runtime' if (!dependency.IsRuntimeDependency()) { return(false); } // Check 'artifact' list if (artifact.ExcludedRuntimeDependencies.OrEmpty().Split(',').Contains(dependency.GroupAndArtifactId(), StringComparer.OrdinalIgnoreCase)) { return(false); } // Check 'global' list if (config.ExcludedRuntimeDependencies.OrEmpty().Split(',').Contains(dependency.GroupAndArtifactId(), StringComparer.OrdinalIgnoreCase)) { return(false); } return(true); }
public static MavenRepository GetMavenRepository(BindingConfig config, MavenArtifactConfig artifact) { var(type, location) = GetMavenInfoForArtifact(config, artifact); var repo = GetOrCreateRepository(type, location); return(repo); }
// Returns artifact output path static async Task <string> DownloadPayload(Artifact mvnArt, MavenArtifactConfig mavenArtifact, Project mavenProject, string artifactDir, BindingConfig config) { var package_prefix = config.DownloadExternalsWithFullName ? $"{mavenArtifact.GroupId}." : string.Empty; package_prefix += $"{mavenArtifact.ArtifactId}."; var base_path = Path.Combine(artifactDir, package_prefix); if (mavenProject.Packaging == "jar" || mavenProject.Packaging == "aar") { var func = new Func <Task <Stream> >(() => mvnArt.OpenLibraryFile(mavenArtifact.Version, mavenProject.Packaging)); await TryDownloadFile(func, base_path + mavenProject.Packaging, ErrorLevel.Error); return(base_path + mavenProject.Packaging); } // Sometimes the "Packaging" isn't useful, like "bundle" for Guava or "pom" for KotlinX Coroutines. // In this case we're going to try "jar" and "aar" to try to find the real payload // Try jar var jar_func = new Func <Task <Stream> >(() => mvnArt.OpenLibraryFile(mavenArtifact.Version, "jar")); var jar_result = await TryDownloadFile(jar_func, base_path + "jar", ErrorLevel.Ignore); if (jar_result) { mavenProject.Packaging = "jar"; return(base_path + "jar"); } // Try aar var aar_func = new Func <Task <Stream> >(() => mvnArt.OpenLibraryFile(mavenArtifact.Version, "aar")); var aar_result = await TryDownloadFile(aar_func, base_path + "aar", ErrorLevel.Ignore); if (aar_result) { mavenProject.Packaging = "aar"; return(base_path + "aar"); } throw new Exception($"Could not find artifact payload {base_path + "jar"}. [Packaging was {mavenProject.Packaging}.]"); }
static (MavenRepoType type, string location) GetMavenInfoForArtifact(BindingConfig config, MavenArtifactConfig artifact) { var template = config.GetTemplateSet(artifact.TemplateSet); if (template.MavenRepositoryType.HasValue) { return(template.MavenRepositoryType.Value, template.MavenRepositoryLocation); } return(config.MavenRepositoryType, config.MavenRepositoryLocation); }