use of org.apache.ivy.core.report.ArtifactDownloadReport in project walkmod-core by walkmod.
the class IvyConfigurationProvider method resolveArtifacts.
public Collection<File> resolveArtifacts() throws Exception {
if (ivy != null) {
if (lastResolvedArtifacts.isEmpty() || !lastResolvedArtifacts.containsAll(artifacts)) {
lastResolvedArtifacts = artifacts;
} else {
return artifactFiles;
}
XmlModuleDescriptorWriter.write(md, ivyfile);
ResolveReport report = ivy.resolve(ivyfile.toURL(), resolveOptions);
if (!report.hasError()) {
ArtifactDownloadReport[] artifacts = report.getAllArtifactsReports();
Collection<File> result = new LinkedList<File>();
for (ArtifactDownloadReport item : artifacts) {
result.add(item.getLocalFile());
}
artifactFiles = result;
return result;
} else {
artifactFiles.clear();
List problems = report.getAllProblemMessages();
if (problems == null || problems.isEmpty()) {
throw new ConfigurationException("Ivy can not resolve the artifacts. Undefined cause");
} else {
String msg = "";
Iterator it = problems.iterator();
while (it.hasNext()) {
String error = it.next().toString();
LOG.warn(error);
if ("".equals(msg)) {
msg = error;
} else {
msg = msg + ";" + error;
}
}
throw new ConfigurationException("Ivy can not resolve the artifacts. Cause: " + msg);
}
}
}
return null;
}
use of org.apache.ivy.core.report.ArtifactDownloadReport in project build-info by JFrogDev.
the class ArtifactoryBuildInfoTrigger method collectDependencyInformation.
/**
* Collect dependency information during the build.
*
* @param event The end of resolution Ivy event
*/
private void collectDependencyInformation(IvyEvent event) {
Project project = (Project) IvyContext.peekInContextStack(IvyTask.ANT_PROJECT_CONTEXT_KEY);
ResolveReport report = ((EndResolveEvent) event).getReport();
@SuppressWarnings("unchecked") Map<String, String> attributes = event.getAttributes();
Module module = getOrCreateModule(attributes);
project.log("[buildinfo:collect] Collecting dependencies for " + module.getId(), Project.MSG_INFO);
if (module.getDependencies() == null || module.getDependencies().isEmpty()) {
String[] configurations = report.getConfigurations();
List<Dependency> moduleDependencies = Lists.newArrayList();
for (String configuration : configurations) {
project.log("[buildinfo:collect] Configuration: " + configuration + " Dependencies", Project.MSG_DEBUG);
ConfigurationResolveReport configurationReport = report.getConfigurationReport(configuration);
ArtifactDownloadReport[] allArtifactsReports = configurationReport.getAllArtifactsReports();
for (final ArtifactDownloadReport artifactsReport : allArtifactsReports) {
project.log("[buildinfo:collect] Artifact Download Report for configuration: " + configuration + " : " + artifactsReport, Project.MSG_DEBUG);
ModuleRevisionId id = artifactsReport.getArtifact().getModuleRevisionId();
String type = getType(artifactsReport.getArtifact());
Dependency dependency = findDependencyInList(id, type, moduleDependencies);
if (dependency == null) {
DependencyBuilder dependencyBuilder = new DependencyBuilder();
dependencyBuilder.type(type).scopes(Sets.newHashSet(configuration));
String idString = getModuleIdString(id.getOrganisation(), id.getName(), id.getRevision());
dependencyBuilder.id(idString);
File file = artifactsReport.getLocalFile();
Map<String, String> checksums;
try {
checksums = FileChecksumCalculator.calculateChecksums(file, MD5, SHA1);
} catch (Exception e) {
throw new RuntimeException(e);
}
String md5 = checksums.get(MD5);
String sha1 = checksums.get(SHA1);
dependencyBuilder.md5(md5).sha1(sha1);
dependency = dependencyBuilder.build();
moduleDependencies.add(dependency);
project.log("[buildinfo:collect] Added dependency '" + dependency.getId() + "'", Project.MSG_DEBUG);
} else {
if (!dependency.getScopes().contains(configuration)) {
dependency.getScopes().add(configuration);
project.log("[buildinfo:collect] Added scope " + configuration + " to dependency '" + dependency.getId() + "'", Project.MSG_DEBUG);
} else {
project.log("[buildinfo:collect] Find same dependency twice in configuration '" + configuration + "' for dependency '" + artifactsReport + "'", Project.MSG_WARN);
}
}
}
}
module.setDependencies(moduleDependencies);
}
}
use of org.apache.ivy.core.report.ArtifactDownloadReport in project ant-ivy by apache.
the class CacheResolver method download.
@Override
public DownloadReport download(Artifact[] artifacts, DownloadOptions options) {
ensureConfigured();
clearArtifactAttempts();
DownloadReport dr = new DownloadReport();
for (Artifact artifact : artifacts) {
final ArtifactDownloadReport adr = new ArtifactDownloadReport(artifact);
dr.addArtifactReport(adr);
ResolvedResource artifactRef = getArtifactRef(artifact, null);
if (artifactRef != null) {
Message.verbose("\t[NOT REQUIRED] " + artifact);
ArtifactOrigin origin = new ArtifactOrigin(artifact, true, artifactRef.getResource().getName());
File archiveFile = ((FileResource) artifactRef.getResource()).getFile();
adr.setDownloadStatus(DownloadStatus.NO);
adr.setSize(archiveFile.length());
adr.setArtifactOrigin(origin);
adr.setLocalFile(archiveFile);
} else {
adr.setDownloadStatus(DownloadStatus.FAILED);
}
}
return dr;
}
use of org.apache.ivy.core.report.ArtifactDownloadReport in project ant-ivy by apache.
the class ChainResolver method download.
public DownloadReport download(Artifact[] artifacts, DownloadOptions options) {
List<Artifact> artifactsToDownload = new ArrayList<>(Arrays.asList(artifacts));
DownloadReport report = new DownloadReport();
for (DependencyResolver resolver : chain) {
if (artifactsToDownload.isEmpty()) {
break;
}
DownloadReport r = resolver.download(artifactsToDownload.toArray(new Artifact[artifactsToDownload.size()]), options);
for (ArtifactDownloadReport adr : r.getArtifactsReports()) {
if (adr.getDownloadStatus() != DownloadStatus.FAILED) {
artifactsToDownload.remove(adr.getArtifact());
report.addArtifactReport(adr);
}
}
}
for (Artifact art : artifactsToDownload) {
ArtifactDownloadReport adr = new ArtifactDownloadReport(art);
adr.setDownloadStatus(DownloadStatus.FAILED);
report.addArtifactReport(adr);
}
return report;
}
use of org.apache.ivy.core.report.ArtifactDownloadReport in project ant-ivy by apache.
the class JarResolver method setSettings.
@Override
public void setSettings(ResolverSettings settings) {
super.setSettings(settings);
if (url == null) {
return;
}
// let's resolve the url
ArtifactDownloadReport report;
EventManager eventManager = getEventManager();
try {
if (eventManager != null) {
getRepository().addTransferListener(eventManager);
}
Resource jarResource = new URLResource(url, this.getTimeoutConstraint());
CacheResourceOptions options = new CacheResourceOptions();
report = getRepositoryCacheManager().downloadRepositoryResource(jarResource, "jarrepository", "jar", "jar", options, new URLRepository());
} finally {
if (eventManager != null) {
getRepository().removeTransferListener(eventManager);
}
}
if (report.getDownloadStatus() == DownloadStatus.FAILED) {
throw new RuntimeException("The jar file " + url.toExternalForm() + " could not be downloaded (" + report.getDownloadDetails() + ")");
}
setJarFile(report.getLocalFile());
}
Aggregations