de.saumya.mojo.gem.GemArtifact Maven / Gradle / Ivy
/**
*
*/
package de.saumya.mojo.gem;
import java.io.File;
import java.util.Collection;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.project.MavenProject;
@SuppressWarnings("deprecation")
public class GemArtifact implements Artifact {
// helper to make maven2 behave like maven3
static class GemArtifactHandler implements ArtifactHandler {
private final ArtifactHandler handler;
GemArtifactHandler(final ArtifactHandler handler) {
this.handler = handler;
}
public String getClassifier() {
return this.handler.getClassifier();
}
public String getDirectory() {
return this.handler.getDirectory();
}
public String getExtension() {
if (this.handler.getExtension().equals("java-gem")) {
return "gem";
}
else {
return this.handler.getExtension();
}
}
public String getLanguage() {
return this.handler.getLanguage();
}
public String getPackaging() {
return this.handler.getPackaging();
}
public boolean isAddedToClasspath() {
return this.handler.isAddedToClasspath();
}
public boolean isIncludesDependencies() {
return this.handler.isIncludesDependencies();
}
}
private final Artifact artifact;
private final File jarFile;
public GemArtifact(final MavenProject project) {
this.artifact = project.getArtifact();
this.jarFile = this.artifact.getFile();
if (isGem()) {
if ( project.getBuild().getFinalName() == null || !project.getGroupId().equals("rubygems")) {
this.artifact.setFile(new File(new File(project.getBuild()
.getDirectory()), getGemFile()));
}
else {
this.artifact.setFile(new File(new File(project.getBuild()
.getDirectory()), project.getBuild().getFinalName() + ".gem" ) );
}
}
// allow maven2 to do the right thing with the classifier
project.setArtifact(this);
this.artifact.setArtifactHandler(new GemArtifactHandler(this.artifact.getArtifactHandler()));
}
public String getGemName() {
if (getGroupId().equals("rubygems")) {
return getArtifactId();
}
else {
final StringBuilder name = new StringBuilder(getGroupId());
name.append(".").append(getArtifactId());
return name.toString();
}
}
public String getGemVersion() {
return getGemVersion(getVersion());
}
public static String getGemVersion(final String artifactVersion) {
final StringBuilder version = new StringBuilder();
boolean first = true;
for (final String part : artifactVersion.replaceAll("-SNAPSHOT", "")
.replace("-", ".")
.split("\\.")) {
if (part.length() > 0) {
if (first) {
first = false;
version.append(part);
}
else {
version.append(".").append(part);
}
}
}
return version.toString();
}
public String getGemFile() {
final StringBuilder name = new StringBuilder(getGemName());
name.append("-").append(getGemVersion());
if (hasJarFile()) {
name.append("-java");
}
name.append(".gem");
return name.toString();
}
public File getFile() {
return this.artifact.getFile();
}
public String getClassifier() {
return this.artifact.getClassifier();
}
public boolean hasJarFile() {
return "java-gem".equals(getType());
}
public File getJarFile() {
if (hasJarFile()) {
return this.jarFile;
}
else {
return null;
}
}
public void addMetadata(final ArtifactMetadata metadata) {
this.artifact.addMetadata(metadata);
}
public int compareTo(final Artifact o) {
return this.artifact.compareTo(o);
}
public ArtifactHandler getArtifactHandler() {
return this.artifact.getArtifactHandler();
}
public String getArtifactId() {
return this.artifact.getArtifactId();
}
public List getAvailableVersions() {
return this.artifact.getAvailableVersions();
}
public String getBaseVersion() {
return this.artifact.getBaseVersion();
}
// public String getClassifier() {
// return this.artifact.getClassifier();
// }
public String getDependencyConflictId() {
return this.artifact.getDependencyConflictId();
}
public ArtifactFilter getDependencyFilter() {
return this.artifact.getDependencyFilter();
}
public List getDependencyTrail() {
return this.artifact.getDependencyTrail();
}
public String getDownloadUrl() {
return this.artifact.getDownloadUrl();
}
public String getGroupId() {
return this.artifact.getGroupId();
}
public String getId() {
return this.artifact.getId();
}
public Collection getMetadataList() {
return this.artifact.getMetadataList();
}
public ArtifactRepository getRepository() {
return this.artifact.getRepository();
}
public String getScope() {
return this.artifact.getScope();
}
public ArtifactVersion getSelectedVersion()
throws OverConstrainedVersionException {
return this.artifact.getSelectedVersion();
}
public String getType() {
return this.artifact.getType();
}
public String getVersion() {
return this.artifact.getVersion();
}
public VersionRange getVersionRange() {
return this.artifact.getVersionRange();
}
public boolean hasClassifier() {
return getClassifier() != null;
}
// public boolean hasClassifier() {
// return this.artifact.hasClassifier();
// }
public boolean isOptional() {
return this.artifact.isOptional();
}
public boolean isRelease() {
return this.artifact.isRelease();
}
public boolean isResolved() {
return this.artifact.isResolved();
}
public boolean isSelectedVersionKnown()
throws OverConstrainedVersionException {
return this.artifact.isSelectedVersionKnown();
}
public boolean isSnapshot() {
return this.artifact.getVersion().matches(".*[a-zA-Z].*");
}
public void selectVersion(final String version) {
this.artifact.selectVersion(version);
}
public void setArtifactHandler(final ArtifactHandler handler) {
this.artifact.setArtifactHandler(handler);
}
public void setArtifactId(final String artifactId) {
this.artifact.setArtifactId(artifactId);
}
public void setAvailableVersions(final List versions) {
this.artifact.setAvailableVersions(versions);
}
public void setBaseVersion(final String baseVersion) {
this.artifact.setBaseVersion(baseVersion);
}
public void setDependencyFilter(final ArtifactFilter artifactFilter) {
this.artifact.setDependencyFilter(artifactFilter);
}
public void setDependencyTrail(final List dependencyTrail) {
this.artifact.setDependencyTrail(dependencyTrail);
}
public void setDownloadUrl(final String downloadUrl) {
this.artifact.setDownloadUrl(downloadUrl);
}
public void setFile(final File destination) {
this.artifact.setFile(destination);
}
public void setGroupId(final String groupId) {
this.artifact.setGroupId(groupId);
}
public void setOptional(final boolean optional) {
this.artifact.setOptional(optional);
}
public void setRelease(final boolean release) {
this.artifact.setRelease(release);
}
public void setRepository(final ArtifactRepository remoteRepository) {
this.artifact.setRepository(remoteRepository);
}
public void setResolved(final boolean resolved) {
this.artifact.setResolved(resolved);
}
public void setResolvedVersion(final String version) {
this.artifact.setResolvedVersion(version);
}
public void setScope(final String scope) {
this.artifact.setScope(scope);
}
public void setVersion(final String version) {
this.artifact.setVersion(version);
}
public void setVersionRange(final VersionRange newRange) {
this.artifact.setVersionRange(newRange);
}
public void updateVersion(final String version,
final ArtifactRepository localRepository) {
this.artifact.updateVersion(version, localRepository);
}
@Override
public String toString() {
return this.artifact.toString();
}
public boolean isGem() {
return this.artifact.getType().contains("gem");
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy