]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.support.maven/src/org/argeo/slc/maven/MavenManager.java
Remove old license headers
[gpl/argeo-slc.git] / org.argeo.slc.support.maven / src / org / argeo / slc / maven / MavenManager.java
1 package org.argeo.slc.maven;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
6 import org.argeo.slc.SlcException;
7 import org.argeo.slc.aether.AetherUtils;
8 import org.argeo.slc.aether.ConsoleRepositoryListener;
9 import org.argeo.slc.aether.ConsoleTransferListener;
10 import org.codehaus.plexus.PlexusContainer;
11 import org.eclipse.aether.DefaultRepositorySystemSession;
12 import org.eclipse.aether.RepositorySystem;
13 import org.eclipse.aether.RepositorySystemSession;
14 import org.eclipse.aether.artifact.Artifact;
15 import org.eclipse.aether.artifact.DefaultArtifact;
16 import org.eclipse.aether.collection.CollectRequest;
17 import org.eclipse.aether.graph.Dependency;
18 import org.eclipse.aether.graph.DependencyNode;
19 import org.eclipse.aether.impl.DefaultServiceLocator;
20 import org.eclipse.aether.repository.LocalRepository;
21 import org.eclipse.aether.repository.RemoteRepository;
22 import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
23
24 public class MavenManager {
25 private final static Log log = LogFactory.getLog(MavenManager.class);
26
27 public void init() {
28 try {
29 testMaven();
30 testAether();
31 // List<ComponentDescriptor<?>> lst = plexusContainer
32 // .discoverComponents(plexusContainer.getContainerRealm());
33 // for (ComponentDescriptor<?> cd : lst) {
34 // log.debug(cd);
35 // }
36 // ArtifactHandler artifactHandler = plexusContainer
37 // .lookup(ArtifactHandler.class);
38 // ArtifactRepository localRepository = new
39 // DefaultArtifactRepositoryFactory().createArtifactRepository("local",
40 // , layoutId, snapshots, releases);
41 // Maven maven = mavenCli.getContainer().lookup(Maven.class);
42 // Artifact artifact = new DefaultArtifact("org.argeo.slc.dist",
43 // "org.argeo.slc.sdk", "0.13.1-SNAPSHOT", "compile", "pom",
44 // null, artifactHandler);
45 // ArtifactResolutionRequest req = new ArtifactResolutionRequest();
46 // req.setLocalRepository(localRepository);
47 // req.setResolveTransitively(true);
48 // req.setArtifact(artifact);
49 // ArtifactResolver artifactResolver = plexusContainer
50 // .lookup(ArtifactResolver.class);
51 // ArtifactResolutionResult res = artifactResolver.resolve(req);
52 // Set<Artifact> artifacts = res.getArtifacts();
53 // for (Artifact art : artifacts) {
54 // log.debug(art);
55 // }
56 } catch (Exception e) {
57 // TODO Auto-generated catch block
58 e.printStackTrace();
59 }
60 }
61
62 public void testMaven() {
63 Thread.currentThread().setContextClassLoader(
64 getClass().getClassLoader());
65 String[] goals = { "-o", "-e", "-f",
66 "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk/pom.xml",
67 "dependency:tree" };
68
69 // String m2Home = "/opt/apache-maven-3.0.1";
70 // System.setProperty("classworlds.conf", m2Home + "/bin/m2.conf");
71 // System.setProperty("maven.home", m2Home);
72 //
73 // Launcher.main(goals);
74
75 CustomCli mavenCli = new CustomCli();
76 mavenCli.doMain(goals,
77 "/home/mbaudier/dev/src/slc/dist/org.argeo.slc.sdk",
78 System.out, System.err);
79
80 PlexusContainer plexusContainer = mavenCli.getContainer();
81 log.debug(plexusContainer.getContext().getContextData());
82 plexusContainer.dispose();
83 }
84
85 public void testAether() {
86 try {
87 RepositorySystem repoSystem = createRepositorySystem();
88
89 RepositorySystemSession session = createRepositorySystemSession(repoSystem);
90
91 Dependency dependency = new Dependency(new DefaultArtifact(
92 "org.argeo.slc.dep:org.argeo.slc.dep.sdk:0.13.1-SNAPSHOT"),
93 "compile");
94 // RemoteRepository argeo = new RemoteRepository("argeo", "default",
95 // "http://maven.argeo.org/argeo/");
96 // RemoteRepository argeoSnapshots = new RemoteRepository(
97 // "argeo-snapshots", "default",
98 // "http://dev.argeo.org/maven/argeo-snapshots/");
99 RemoteRepository argeo =null;
100 RemoteRepository argeoSnapshots =null;
101
102 CollectRequest collectRequest = new CollectRequest();
103 collectRequest.setRoot(dependency);
104 collectRequest.addRepository(argeo);
105 collectRequest.addRepository(argeoSnapshots);
106 DependencyNode node = repoSystem.collectDependencies(session,
107 collectRequest).getRoot();
108
109 // repoSystem.resolveDependencies(session, node, null);
110
111 PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
112 node.accept(nlg);
113
114 for (Artifact artifact : nlg.getArtifacts(true)) {
115 log.debug(artifact);
116 }
117
118 AetherUtils.logDependencyNode(0, node);
119 // System.out.println(nlg.getClassPath());
120
121 } catch (Exception e) {
122 throw new SlcException("Cannot resolve", e);
123 }
124
125 }
126
127 /** Creates a Maven {@link RepositorySystem}. */
128 public static RepositorySystem createRepositorySystem() {
129 try {
130 DefaultServiceLocator locator = new DefaultServiceLocator();
131
132 // locator.setServices(WagonProvider.class, new ManualWagonProvider());
133 // locator.addService(RepositoryConnectorFactory.class,
134 // WagonRepositoryConnectorFactory.class);
135
136 return locator.getService(RepositorySystem.class);
137 } catch (Exception e) {
138 throw new SlcException("Cannot lookup repository system", e);
139 }
140 }
141
142 public static RepositorySystemSession createRepositorySystemSession(
143 RepositorySystem system) {
144 // MavenRepositorySystemSession session = new MavenRepositorySystemSession();
145 DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
146
147 LocalRepository localRepo = new LocalRepository(
148 System.getProperty("user.home") + "/.m2/repository");
149 session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );
150 // session.setLocalRepositoryManager(system
151 // .newLocalRepositoryManager(localRepo));
152 session.setTransferListener(new ConsoleTransferListener(System.out));
153 session.setRepositoryListener(new ConsoleRepositoryListener());
154 return session;
155 }
156
157 public static void main(String[] args) {
158 new MavenManager().init();
159 }
160
161 }