-/*\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
+package org.argeo.slc.maven;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.aether.AetherUtils;
+import org.argeo.slc.aether.ConsoleRepositoryListener;
+import org.argeo.slc.aether.ConsoleTransferListener;
+import org.codehaus.plexus.PlexusContainer;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.impl.DefaultServiceLocator;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
+
+public class MavenManager {
+ private final static Log log = LogFactory.getLog(MavenManager.class);
+
+ public void init() {
+ try {
+ testMaven();
+ testAether();
+ // List<ComponentDescriptor<?>> lst = plexusContainer
+ // .discoverComponents(plexusContainer.getContainerRealm());
+ // for (ComponentDescriptor<?> cd : lst) {
+ // log.debug(cd);
+ // }
+ // ArtifactHandler artifactHandler = plexusContainer
+ // .lookup(ArtifactHandler.class);
+ // ArtifactRepository localRepository = new
+ // DefaultArtifactRepositoryFactory().createArtifactRepository("local",
+ // , layoutId, snapshots, releases);
+ // Maven maven = mavenCli.getContainer().lookup(Maven.class);
+ // Artifact artifact = new DefaultArtifact("org.argeo.slc.dist",
+ // "org.argeo.slc.sdk", "0.13.1-SNAPSHOT", "compile", "pom",
+ // null, artifactHandler);
+ // ArtifactResolutionRequest req = new ArtifactResolutionRequest();
+ // req.setLocalRepository(localRepository);
+ // req.setResolveTransitively(true);
+ // req.setArtifact(artifact);
+ // ArtifactResolver artifactResolver = plexusContainer
+ // .lookup(ArtifactResolver.class);
+ // ArtifactResolutionResult res = artifactResolver.resolve(req);
+ // Set<Artifact> artifacts = res.getArtifacts();
+ // for (Artifact art : artifacts) {
+ // log.debug(art);
+ // }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void testMaven() {
+ Thread.currentThread().setContextClassLoader(
+ getClass().getClassLoader());
+ String[] goals = { "-o", "-e", "-f",
+ "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk/pom.xml",
+ "dependency:tree" };
+
+ // String m2Home = "/opt/apache-maven-3.0.1";
+ // System.setProperty("classworlds.conf", m2Home + "/bin/m2.conf");
+ // System.setProperty("maven.home", m2Home);
+ //
+ // Launcher.main(goals);
+
+ CustomCli mavenCli = new CustomCli();
+ mavenCli.doMain(goals,
+ "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk",
+ System.out, System.err);
+
+ PlexusContainer plexusContainer = mavenCli.getContainer();
+ log.debug(plexusContainer.getContext().getContextData());
+ plexusContainer.dispose();
+ }
+
+ public void testAether() {
+ try {
+ RepositorySystem repoSystem = createRepositorySystem();
+
+ RepositorySystemSession session = createRepositorySystemSession(repoSystem);
+
+ Dependency dependency = new Dependency(new DefaultArtifact(
+ "org.argeo.slc.dep:org.argeo.slc.dep.sdk:0.13.1-SNAPSHOT"),
+ "compile");
+// RemoteRepository argeo = new RemoteRepository("argeo", "default",
+// "http://maven.argeo.org/argeo/");
+// RemoteRepository argeoSnapshots = new RemoteRepository(
+// "argeo-snapshots", "default",
+// "http://dev.argeo.org/maven/argeo-snapshots/");
+ RemoteRepository argeo =null;
+ RemoteRepository argeoSnapshots =null;
+
+ CollectRequest collectRequest = new CollectRequest();
+ collectRequest.setRoot(dependency);
+ collectRequest.addRepository(argeo);
+ collectRequest.addRepository(argeoSnapshots);
+ DependencyNode node = repoSystem.collectDependencies(session,
+ collectRequest).getRoot();
+
+// repoSystem.resolveDependencies(session, node, null);
+
+ PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
+ node.accept(nlg);
+
+ for (Artifact artifact : nlg.getArtifacts(true)) {
+ log.debug(artifact);
+ }
+
+ AetherUtils.logDependencyNode(0, node);
+ // System.out.println(nlg.getClassPath());
+
+ } catch (Exception e) {
+ throw new SlcException("Cannot resolve", e);
+ }
+
+ }
+
+ /** Creates a Maven {@link RepositorySystem}. */
+ public static RepositorySystem createRepositorySystem() {
+ try {
+ DefaultServiceLocator locator = new DefaultServiceLocator();
+
+// locator.setServices(WagonProvider.class, new ManualWagonProvider());
+// locator.addService(RepositoryConnectorFactory.class,
+// WagonRepositoryConnectorFactory.class);
+
+ return locator.getService(RepositorySystem.class);
+ } catch (Exception e) {
+ throw new SlcException("Cannot lookup repository system", e);
+ }
+ }
+
+ public static RepositorySystemSession createRepositorySystemSession(
+ RepositorySystem system) {
+// MavenRepositorySystemSession session = new MavenRepositorySystemSession();
+ DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
+
+ LocalRepository localRepo = new LocalRepository(
+ System.getProperty("user.home") + "/.m2/repository");
+ session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );
+// session.setLocalRepositoryManager(system
+// .newLocalRepositoryManager(localRepo));
+ session.setTransferListener(new ConsoleTransferListener(System.out));
+ session.setRepositoryListener(new ConsoleRepositoryListener());
+ return session;
+ }
+
+ public static void main(String[] args) {
+ new MavenManager().init();
+ }
+
+}