in src/java/org/apache/ivy/core/publish/PublishEngine.java [182:264]
public Collection<Artifact> publish(ModuleDescriptor md, Collection<String> srcArtifactPattern,
DependencyResolver resolver, PublishOptions options) throws IOException {
Collection<Artifact> missing = new ArrayList<>();
Set<Artifact> artifactsSet = new LinkedHashSet<>();
for (String conf : replaceWildcards(options.getConfs(), md)) {
artifactsSet.addAll(Arrays.asList(md.getArtifacts(conf)));
}
Artifact[] extraArtifacts = options.getExtraArtifacts();
if (extraArtifacts != null) {
for (Artifact extraArtifact : extraArtifacts) {
artifactsSet.add(new MDArtifact(md, extraArtifact.getName(), extraArtifact
.getType(), extraArtifact.getExt(), extraArtifact.getUrl(),
extraArtifact.getQualifiedExtraAttributes()));
}
}
// now collects artifacts files
Map<Artifact, File> artifactsFiles = new LinkedHashMap<>();
for (Artifact artifact : artifactsSet) {
for (String pattern : srcArtifactPattern) {
File artifactFile = settings.resolveFile(IvyPatternHelper.substitute(
settings.substitute(pattern), artifact));
if (artifactFile.exists()) {
artifactsFiles.put(artifact, artifactFile);
break;
}
}
if (!artifactsFiles.containsKey(artifact)) {
StringBuilder sb = new StringBuilder();
sb.append("missing artifact ").append(artifact).append(":\n");
for (String pattern : srcArtifactPattern) {
sb.append("\t").append(settings.resolveFile(IvyPatternHelper.substitute(pattern,
artifact))).append(" file does not exist\n");
}
if (options.isWarnOnMissing() || options.isHaltOnMissing()) {
Message.warn(sb.toString());
} else {
Message.verbose(sb.toString());
}
if (options.isHaltOnMissing()) {
throw new IOException("missing artifact " + artifact);
}
missing.add(artifact);
}
}
if (options.getSrcIvyPattern() != null) {
Artifact artifact = MDArtifact.newIvyArtifact(md);
File artifactFile = settings.resolveFile(IvyPatternHelper.substitute(
options.getSrcIvyPattern(), artifact));
if (!artifactFile.exists()) {
String msg = "missing ivy file for " + md.getModuleRevisionId() + ": \n"
+ artifactFile + " file does not exist";
if (options.isWarnOnMissing() || options.isHaltOnMissing()) {
Message.warn(msg);
} else {
Message.verbose(msg);
}
if (options.isHaltOnMissing()) {
throw new IOException("missing ivy artifact " + artifact);
}
missing.add(artifact);
} else {
artifactsFiles.put(artifact, artifactFile);
}
}
// and now do actual publishing
boolean successfullyPublished = false;
try {
resolver.beginPublishTransaction(md.getModuleRevisionId(), options.isOverwrite());
// for each declared published artifact in this descriptor, do:
for (Map.Entry<Artifact, File> entry : artifactsFiles.entrySet()) {
publish(entry.getKey(), entry.getValue(), resolver, options.isOverwrite());
}
resolver.commitPublishTransaction();
successfullyPublished = true;
} finally {
if (!successfullyPublished) {
resolver.abortPublishTransaction();
}
}
return missing;
}