--- /dev/null
+package org.argeo.slc.maven;\r
+\r
+import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+\r
+public class MavenFile implements Distribution, DeploymentData {\r
+ private String groupId;\r
+ private String artifactId;\r
+ private String version;\r
+ private String type;\r
+ private String classifier;\r
+\r
+ private String distributionId;\r
+\r
+ public String getDistributionId() {\r
+ return distributionId;\r
+ }\r
+\r
+ public void setDistributionId(String distributionId) {\r
+ this.distributionId = distributionId;\r
+ }\r
+\r
+ public String getGroupId() {\r
+ return groupId;\r
+ }\r
+\r
+ public void setGroupId(String groupId) {\r
+ this.groupId = groupId;\r
+ }\r
+\r
+ public String getArtifactId() {\r
+ return artifactId;\r
+ }\r
+\r
+ public void setArtifactId(String artifactId) {\r
+ this.artifactId = artifactId;\r
+ }\r
+\r
+ public String getVersion() {\r
+ return version;\r
+ }\r
+\r
+ public void setVersion(String version) {\r
+ this.version = version;\r
+ }\r
+\r
+ public String getType() {\r
+ return type;\r
+ }\r
+\r
+ public void setType(String type) {\r
+ this.type = type;\r
+ }\r
+\r
+ public String getClassifier() {\r
+ return classifier;\r
+ }\r
+\r
+ public void setClassifier(String classifier) {\r
+ this.classifier = classifier;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.maven;\r
+\r
+import java.io.File;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.maven.artifact.Artifact;\r
+import org.apache.maven.artifact.repository.ArtifactRepository;\r
+import org.apache.maven.embedder.MavenEmbedder;\r
+import org.apache.maven.embedder.MavenEmbedderException;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+\r
+public class MavenManager {\r
+ private final Log log = LogFactory.getLog(getClass());\r
+\r
+ private String repositoryId;\r
+ private String repositoryUrl;\r
+ private String localRepositoryPath;\r
+\r
+ private ArtifactRepository localRepository;\r
+ private List<ArtifactRepository> remoteRepositories;\r
+\r
+ private MavenEmbedder mavenEmbedder;\r
+\r
+ public void init() {\r
+ try {\r
+ mavenEmbedder = new MavenEmbedder();\r
+ mavenEmbedder.setOffline(true);\r
+ mavenEmbedder.setClassLoader(Thread.currentThread()\r
+ .getContextClassLoader());\r
+ mavenEmbedder.start();\r
+\r
+ mavenEmbedder.setLocalRepositoryDirectory(new File(\r
+ localRepositoryPath));\r
+\r
+ localRepository = mavenEmbedder.getLocalRepository();\r
+\r
+ // localRepository = mavenEmbedder.createLocalRepository(new File(\r
+ // localRepositoryPath));\r
+\r
+ ArtifactRepository repository = mavenEmbedder.createRepository(\r
+ repositoryUrl, repositoryId);\r
+\r
+ remoteRepositories = new Vector<ArtifactRepository>();\r
+ remoteRepositories.add(repository);\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot initialize Maven manager", e);\r
+ }\r
+ }\r
+\r
+ private Artifact resolve(MavenFile mavenDistribution) {\r
+ try {\r
+ Artifact artifact;\r
+ if (mavenDistribution.getClassifier() == null) {\r
+ artifact = mavenEmbedder.createArtifact(mavenDistribution\r
+ .getGroupId(), mavenDistribution.getArtifactId(),\r
+ mavenDistribution.getVersion(),\r
+ Artifact.SCOPE_PROVIDED, mavenDistribution.getType());\r
+ } else {\r
+ artifact = mavenEmbedder.createArtifactWithClassifier(\r
+ mavenDistribution.getGroupId(), mavenDistribution\r
+ .getArtifactId(), mavenDistribution\r
+ .getVersion(), mavenDistribution.getType(),\r
+ mavenDistribution.getClassifier());\r
+ }\r
+\r
+ mavenEmbedder\r
+ .resolve(artifact, remoteRepositories, localRepository);\r
+\r
+ return artifact;\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot resolve artifact.", e);\r
+ }\r
+ }\r
+\r
+ public File getPackageLocation(MavenFile mavenDistribution) {\r
+ return resolve(mavenDistribution).getFile();\r
+ }\r
+\r
+ public void destroy() {\r
+ try {\r
+ if (mavenEmbedder != null) {\r
+ mavenEmbedder.stop();\r
+ }\r
+ } catch (MavenEmbedderException e) {\r
+ log.error("Cannot destroy Maven manager", e);\r
+ }\r
+ }\r
+\r
+ public void setRepositoryId(String repositoryId) {\r
+ this.repositoryId = repositoryId;\r
+ }\r
+\r
+ public void setRepositoryUrl(String repositoryUrl) {\r
+ this.repositoryUrl = repositoryUrl;\r
+ }\r
+\r
+ public void setLocalRepositoryPath(String localRepositoryPath) {\r
+ this.localRepositoryPath = localRepositoryPath;\r
+ }\r
+\r
+}\r