From b784cf3cf0a72b72178fb9d69ccfdacaa2f4c5a6 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 31 May 2008 15:39:59 +0000 Subject: [PATCH] Migrate deploy developments to main project git-svn-id: https://svn.argeo.org/slc/trunk@1152 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../java/org/argeo/slc/maven/MavenFile.java | 63 +++++++++++ .../org/argeo/slc/maven/MavenManager.java | 105 ++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenFile.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenManager.java diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenFile.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenFile.java new file mode 100644 index 000000000..31c6385a6 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenFile.java @@ -0,0 +1,63 @@ +package org.argeo.slc.maven; + +import org.argeo.slc.core.build.Distribution; +import org.argeo.slc.core.deploy.DeploymentData; + +public class MavenFile implements Distribution, DeploymentData { + private String groupId; + private String artifactId; + private String version; + private String type; + private String classifier; + + private String distributionId; + + public String getDistributionId() { + return distributionId; + } + + public void setDistributionId(String distributionId) { + this.distributionId = distributionId; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getArtifactId() { + return artifactId; + } + + public void setArtifactId(String artifactId) { + this.artifactId = artifactId; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getClassifier() { + return classifier; + } + + public void setClassifier(String classifier) { + this.classifier = classifier; + } + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenManager.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenManager.java new file mode 100644 index 000000000..3a07e227a --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenManager.java @@ -0,0 +1,105 @@ +package org.argeo.slc.maven; + +import java.io.File; +import java.util.List; +import java.util.Vector; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.embedder.MavenEmbedder; +import org.apache.maven.embedder.MavenEmbedderException; + +import org.argeo.slc.core.SlcException; + +public class MavenManager { + private final Log log = LogFactory.getLog(getClass()); + + private String repositoryId; + private String repositoryUrl; + private String localRepositoryPath; + + private ArtifactRepository localRepository; + private List remoteRepositories; + + private MavenEmbedder mavenEmbedder; + + public void init() { + try { + mavenEmbedder = new MavenEmbedder(); + mavenEmbedder.setOffline(true); + mavenEmbedder.setClassLoader(Thread.currentThread() + .getContextClassLoader()); + mavenEmbedder.start(); + + mavenEmbedder.setLocalRepositoryDirectory(new File( + localRepositoryPath)); + + localRepository = mavenEmbedder.getLocalRepository(); + + // localRepository = mavenEmbedder.createLocalRepository(new File( + // localRepositoryPath)); + + ArtifactRepository repository = mavenEmbedder.createRepository( + repositoryUrl, repositoryId); + + remoteRepositories = new Vector(); + remoteRepositories.add(repository); + } catch (Exception e) { + throw new SlcException("Cannot initialize Maven manager", e); + } + } + + private Artifact resolve(MavenFile mavenDistribution) { + try { + Artifact artifact; + if (mavenDistribution.getClassifier() == null) { + artifact = mavenEmbedder.createArtifact(mavenDistribution + .getGroupId(), mavenDistribution.getArtifactId(), + mavenDistribution.getVersion(), + Artifact.SCOPE_PROVIDED, mavenDistribution.getType()); + } else { + artifact = mavenEmbedder.createArtifactWithClassifier( + mavenDistribution.getGroupId(), mavenDistribution + .getArtifactId(), mavenDistribution + .getVersion(), mavenDistribution.getType(), + mavenDistribution.getClassifier()); + } + + mavenEmbedder + .resolve(artifact, remoteRepositories, localRepository); + + return artifact; + } catch (Exception e) { + throw new SlcException("Cannot resolve artifact.", e); + } + } + + public File getPackageLocation(MavenFile mavenDistribution) { + return resolve(mavenDistribution).getFile(); + } + + public void destroy() { + try { + if (mavenEmbedder != null) { + mavenEmbedder.stop(); + } + } catch (MavenEmbedderException e) { + log.error("Cannot destroy Maven manager", e); + } + } + + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } + + public void setRepositoryUrl(String repositoryUrl) { + this.repositoryUrl = repositoryUrl; + } + + public void setLocalRepositoryPath(String localRepositoryPath) { + this.localRepositoryPath = localRepositoryPath; + } + +} -- 2.39.2