Migrate deploy developments to main project
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 31 May 2008 15:39:59 +0000 (15:39 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 31 May 2008 15:39:59 +0000 (15:39 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1152 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenFile.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/maven/MavenManager.java [new file with mode: 0644]

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 (file)
index 0000000..31c6385
--- /dev/null
@@ -0,0 +1,63 @@
+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
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 (file)
index 0000000..3a07e22
--- /dev/null
@@ -0,0 +1,105 @@
+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