added file import; updated docs and deps; v1.4.x
This commit is contained in:
@@ -47,7 +47,7 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
private final Pattern artifactPattern = Pattern.compile("^([^:]*):([^:]*)(:([^:]+))?$");
|
||||
private final Pattern notRegexPattern = Pattern.compile("^[A-Za-z0-9_\\.]*$");
|
||||
private final Pattern notRegexPattern = Pattern.compile("^[A-Za-z0-9_\\-\\.]*$");
|
||||
|
||||
protected final List<ArtifactFilter> includeArtifacts = new LinkedList<>();
|
||||
protected final List<ArtifactFilter> excludeArtifacts = new LinkedList<>();
|
||||
@@ -75,35 +75,31 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
|
||||
private void processImports(Xpp3Dom importDom) throws IOException, MojoFailureException {
|
||||
for (Xpp3Dom child : importDom.getChildren()) {
|
||||
BanConfigurationDownloader downloader = null;
|
||||
if (child.getName().equals("url")) {
|
||||
if (child.getName().equals("file")) {
|
||||
File file = new File(StringUtils.trimToNull(child.getValue()));
|
||||
downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, file);
|
||||
} else if (child.getName().equals("url")) {
|
||||
String url = StringUtils.trimToNull(child.getValue());
|
||||
downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, url);
|
||||
} else if (child.getName().equals("artifact")) {
|
||||
Artifact artifact = new DefaultArtifact(child.getValue());
|
||||
if (!"xml".equals(artifact.getExtension()))
|
||||
artifact = new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getClassifier(), "xml", artifact.getVersion());
|
||||
|
||||
VersionRangeRequest vrrequest = new VersionRangeRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
|
||||
try {
|
||||
VersionRangeResult vrresult = this.versionRangeResolver.resolveVersionRange(this.session.getRepositorySession(), vrrequest);
|
||||
if (vrresult.getVersions().isEmpty()) {
|
||||
this.logger.error("The artifact version range could not be resolved; skipping: {}", child.getValue());
|
||||
} else {
|
||||
Version version = vrresult.getHighestVersion();
|
||||
artifact = artifact.setVersion(version.toString());
|
||||
|
||||
ArtifactRequest arequest = new ArtifactRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
|
||||
try {
|
||||
ArtifactResult aresult = this.artifactResolver.resolveArtifact(this.session.getRepositorySession(), arequest);
|
||||
File file = aresult.getArtifact().getFile();
|
||||
downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, file);
|
||||
} catch (ArtifactResolutionException are) {
|
||||
this.logger.warn("The artifact version could not be resolved; skipping: {}", artifact, version);
|
||||
}
|
||||
}
|
||||
} catch (VersionRangeResolutionException vrre) {
|
||||
this.logger.error("The artifact version range could not be resolved; skipping: {}", child.getValue());
|
||||
|
||||
Version latestLocalVersion = this.findLatestLocalVersion(artifact, child.getValue());
|
||||
Artifact latestArtifact = this.findLatestArtifact(artifact, child.getValue());
|
||||
if (latestArtifact == null && latestLocalVersion != null) {
|
||||
this.logger.debug("A latest version was found locally, but could not resolve the artifact; trying to resolve the artifact with the specific version: {}: {}", latestLocalVersion, child.getValue());
|
||||
artifact = artifact.setVersion(latestLocalVersion.toString());
|
||||
latestArtifact = this.findLatestArtifact(artifact, child.getValue());
|
||||
}
|
||||
|
||||
if (artifact != null) {
|
||||
File file = artifact.getFile();
|
||||
downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, file);
|
||||
}
|
||||
} else {
|
||||
this.logger.debug("Unrecognized configuration element ignored: {}: {}", child.getName(), child.getValue());
|
||||
}
|
||||
|
||||
if (downloader != null) {
|
||||
@@ -113,6 +109,37 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
private Version findLatestLocalVersion(Artifact artifact, String logId) {
|
||||
this.logger.trace("Inspecting the local repository to select the version to import: {}", logId);
|
||||
VersionRangeRequest vrrequest = new VersionRangeRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
|
||||
try {
|
||||
VersionRangeResult vrresult = this.versionRangeResolver.resolveVersionRange(this.session.getRepositorySession(), vrrequest);
|
||||
if (vrresult.getVersions().isEmpty()) {
|
||||
this.logger.info("The artifact version range could not be resolved locally; trying remote: {}", logId);
|
||||
return null;
|
||||
} else {
|
||||
this.logger.debug("The artifact version discovered locally: {}; trying remote: {}", vrresult.getHighestVersion(), logId);
|
||||
return vrresult.getHighestVersion();
|
||||
}
|
||||
} catch (VersionRangeResolutionException vrre) {
|
||||
this.logger.error("The artifact version range could not be resolved; skipping: {}", logId);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Artifact findLatestArtifact(Artifact artifact, String logId) {
|
||||
this.logger.trace("Inspecting the local/remote repositories to select the artifact to import: {}", logId);
|
||||
ArtifactRequest arequest = new ArtifactRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
|
||||
try {
|
||||
ArtifactResult aresult = this.artifactResolver.resolveArtifact(this.session.getRepositorySession(), arequest);
|
||||
this.logger.debug("This artifact version discovered remotely: {}: {}", aresult.getArtifact().getVersion(), logId);
|
||||
return aresult.getArtifact();
|
||||
} catch (ArtifactResolutionException are) {
|
||||
this.logger.warn("The artifact could not be resolved; skipping: {}", artifact);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void processIncludesExcludes(Xpp3Dom rootDom) {
|
||||
Xpp3Dom includesDom = rootDom.getChild("includes");
|
||||
if (includesDom != null)
|
||||
|
Reference in New Issue
Block a user