]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.support.maven/src/org/argeo/slc/maven/MavenManager.java
Reactivate:
[gpl/argeo-slc.git] / org.argeo.slc.support.maven / src / org / argeo / slc / maven / MavenManager.java
diff --git a/org.argeo.slc.support.maven/src/org/argeo/slc/maven/MavenManager.java b/org.argeo.slc.support.maven/src/org/argeo/slc/maven/MavenManager.java
new file mode 100644 (file)
index 0000000..37dabc6
--- /dev/null
@@ -0,0 +1,176 @@
+/*\r
+ * Copyright (C) 2007-2012 Argeo GmbH\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *         http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+package org.argeo.slc.maven;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;\r
+import org.argeo.slc.SlcException;\r
+import org.argeo.slc.aether.AetherUtils;\r
+import org.argeo.slc.aether.ConsoleRepositoryListener;\r
+import org.argeo.slc.aether.ConsoleTransferListener;\r
+import org.codehaus.plexus.PlexusContainer;\r
+import org.eclipse.aether.DefaultRepositorySystemSession;\r
+import org.eclipse.aether.RepositorySystem;\r
+import org.eclipse.aether.RepositorySystemSession;\r
+import org.eclipse.aether.artifact.Artifact;\r
+import org.eclipse.aether.artifact.DefaultArtifact;\r
+import org.eclipse.aether.collection.CollectRequest;\r
+import org.eclipse.aether.graph.Dependency;\r
+import org.eclipse.aether.graph.DependencyNode;\r
+import org.eclipse.aether.impl.DefaultServiceLocator;\r
+import org.eclipse.aether.repository.LocalRepository;\r
+import org.eclipse.aether.repository.RemoteRepository;\r
+import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;\r
+\r
+public class MavenManager {\r
+       private final static Log log = LogFactory.getLog(MavenManager.class);\r
+\r
+       public void init() {\r
+               try {\r
+                       testMaven();\r
+                       testAether();\r
+                       // List<ComponentDescriptor<?>> lst = plexusContainer\r
+                       // .discoverComponents(plexusContainer.getContainerRealm());\r
+                       // for (ComponentDescriptor<?> cd : lst) {\r
+                       // log.debug(cd);\r
+                       // }\r
+                       // ArtifactHandler artifactHandler = plexusContainer\r
+                       // .lookup(ArtifactHandler.class);\r
+                       // ArtifactRepository localRepository = new\r
+                       // DefaultArtifactRepositoryFactory().createArtifactRepository("local",\r
+                       // , layoutId, snapshots, releases);\r
+                       // Maven maven = mavenCli.getContainer().lookup(Maven.class);\r
+                       // Artifact artifact = new DefaultArtifact("org.argeo.slc.dist",\r
+                       // "org.argeo.slc.sdk", "0.13.1-SNAPSHOT", "compile", "pom",\r
+                       // null, artifactHandler);\r
+                       // ArtifactResolutionRequest req = new ArtifactResolutionRequest();\r
+                       // req.setLocalRepository(localRepository);\r
+                       // req.setResolveTransitively(true);\r
+                       // req.setArtifact(artifact);\r
+                       // ArtifactResolver artifactResolver = plexusContainer\r
+                       // .lookup(ArtifactResolver.class);\r
+                       // ArtifactResolutionResult res = artifactResolver.resolve(req);\r
+                       // Set<Artifact> artifacts = res.getArtifacts();\r
+                       // for (Artifact art : artifacts) {\r
+                       // log.debug(art);\r
+                       // }\r
+               } catch (Exception e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
+\r
+       public void testMaven() {\r
+               Thread.currentThread().setContextClassLoader(\r
+                               getClass().getClassLoader());\r
+               String[] goals = { "-o", "-e", "-f",\r
+                               "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk/pom.xml",\r
+                               "dependency:tree" };\r
+\r
+               // String m2Home = "/opt/apache-maven-3.0.1";\r
+               // System.setProperty("classworlds.conf", m2Home + "/bin/m2.conf");\r
+               // System.setProperty("maven.home", m2Home);\r
+               //\r
+               // Launcher.main(goals);\r
+\r
+               CustomCli mavenCli = new CustomCli();\r
+               mavenCli.doMain(goals,\r
+                               "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk",\r
+                               System.out, System.err);\r
+\r
+               PlexusContainer plexusContainer = mavenCli.getContainer();\r
+               log.debug(plexusContainer.getContext().getContextData());\r
+               plexusContainer.dispose();\r
+       }\r
+\r
+       public void testAether() {\r
+               try {\r
+                       RepositorySystem repoSystem = createRepositorySystem();\r
+\r
+                       RepositorySystemSession session = createRepositorySystemSession(repoSystem);\r
+\r
+                       Dependency dependency = new Dependency(new DefaultArtifact(\r
+                                       "org.argeo.slc.dep:org.argeo.slc.dep.sdk:0.13.1-SNAPSHOT"),\r
+                                       "compile");\r
+//                     RemoteRepository argeo = new RemoteRepository("argeo", "default",\r
+//                                     "http://maven.argeo.org/argeo/");\r
+//                     RemoteRepository argeoSnapshots = new RemoteRepository(\r
+//                                     "argeo-snapshots", "default",\r
+//                                     "http://dev.argeo.org/maven/argeo-snapshots/");\r
+                       RemoteRepository argeo =null;\r
+                       RemoteRepository argeoSnapshots =null;\r
+\r
+                       CollectRequest collectRequest = new CollectRequest();\r
+                       collectRequest.setRoot(dependency);\r
+                       collectRequest.addRepository(argeo);\r
+                       collectRequest.addRepository(argeoSnapshots);\r
+                       DependencyNode node = repoSystem.collectDependencies(session,\r
+                                       collectRequest).getRoot();\r
+\r
+//                     repoSystem.resolveDependencies(session, node, null);\r
+\r
+                       PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();\r
+                       node.accept(nlg);\r
+\r
+                       for (Artifact artifact : nlg.getArtifacts(true)) {\r
+                               log.debug(artifact);\r
+                       }\r
+\r
+                       AetherUtils.logDependencyNode(0, node);\r
+                       // System.out.println(nlg.getClassPath());\r
+\r
+               } catch (Exception e) {\r
+                       throw new SlcException("Cannot resolve", e);\r
+               }\r
+\r
+       }\r
+\r
+       /** Creates a Maven {@link RepositorySystem}. */\r
+       public static RepositorySystem createRepositorySystem() {\r
+               try {\r
+                       DefaultServiceLocator locator = new DefaultServiceLocator();\r
+\r
+//                     locator.setServices(WagonProvider.class, new ManualWagonProvider());\r
+//                     locator.addService(RepositoryConnectorFactory.class,\r
+//                                     WagonRepositoryConnectorFactory.class);\r
+\r
+                       return locator.getService(RepositorySystem.class);\r
+               } catch (Exception e) {\r
+                       throw new SlcException("Cannot lookup repository system", e);\r
+               }\r
+       }\r
+\r
+       public static RepositorySystemSession createRepositorySystemSession(\r
+                       RepositorySystem system) {\r
+//             MavenRepositorySystemSession session = new MavenRepositorySystemSession();\r
+              DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();\r
+              \r
+               LocalRepository localRepo = new LocalRepository(\r
+                               System.getProperty("user.home") + "/.m2/repository");\r
+        session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );\r
+//             session.setLocalRepositoryManager(system\r
+//                             .newLocalRepositoryManager(localRepo));\r
+               session.setTransferListener(new ConsoleTransferListener(System.out));\r
+               session.setRepositoryListener(new ConsoleRepositoryListener());\r
+               return session;\r
+       }\r
+\r
+       public static void main(String[] args) {\r
+               new MavenManager().init();\r
+       }\r
+\r
+}\r