ModuleDescriptor md = ModuleDescriptorParserRegistry.getInstance().parseDescriptor(
settings, ivyFile, settings.doValidate());
// check publications if possible
if (resolvername != null) {
DependencyResolver resolver = settings.getResolver(resolvername);
String[] confs = md.getConfigurationsNames();
Set artifacts = new HashSet();
for (int i = 0; i < confs.length; i++) {
artifacts.addAll(Arrays.asList(md.getArtifacts(confs[i])));
}
for (Iterator iter = artifacts.iterator(); iter.hasNext();) {
Artifact art = (Artifact) iter.next();
if (!resolver.exists(art)) {
Message.info("declared publication not found: " + art);
result = false;
}
}
}
// check dependencies
DependencyDescriptor[] dds = md.getDependencies();
ResolveData data = new ResolveData(resolveEngine, new ResolveOptions());
for (int i = 0; i < dds.length; i++) {
// check master confs
String[] masterConfs = dds[i].getModuleConfigurations();
for (int j = 0; j < masterConfs.length; j++) {
if (!"*".equals(masterConfs[j].trim())
&& md.getConfiguration(masterConfs[j]) == null) {
Message.info("dependency required in non existing conf for " + ivyFile
+ " \n\tin " + dds[i] + ": " + masterConfs[j]);
result = false;
}
}
// resolve
DependencyResolver resolver = settings
.getResolver(dds[i].getDependencyRevisionId());
ResolvedModuleRevision rmr = resolver.getDependency(dds[i], data);
if (rmr == null) {
Message.info("dependency not found in " + ivyFile + ":\n\t" + dds[i]);
result = false;
} else {
String[] depConfs = dds[i].getDependencyConfigurations(md
.getConfigurationsNames());
for (int j = 0; j < depConfs.length; j++) {
if (!Arrays.asList(rmr.getDescriptor().getConfigurationsNames()).contains(
depConfs[j])) {
Message.info("dependency configuration is missing for " + ivyFile
+ "\n\tin " + dds[i] + ": " + depConfs[j]);
result = false;
}
Artifact[] arts = rmr.getDescriptor().getArtifacts(depConfs[j]);
for (int k = 0; k < arts.length; k++) {
if (!resolver.exists(arts[k])) {
Message.info("dependency artifact is missing for " + ivyFile
+ "\n\t in " + dds[i] + ": " + arts[k]);
result = false;
}
}