1 package org
.argeo
.slc
.maven
;
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
;
24 public class MavenManager
{
25 private final static Log log
= LogFactory
.getLog(MavenManager
.class);
31 // List<ComponentDescriptor<?>> lst = plexusContainer
32 // .discoverComponents(plexusContainer.getContainerRealm());
33 // for (ComponentDescriptor<?> cd : lst) {
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) {
56 } catch (Exception e
) {
57 // TODO Auto-generated catch block
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",
69 // String m2Home = "/opt/apache-maven-3.0.1";
70 // System.setProperty("classworlds.conf", m2Home + "/bin/m2.conf");
71 // System.setProperty("maven.home", m2Home);
73 // Launcher.main(goals);
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
);
80 PlexusContainer plexusContainer
= mavenCli
.getContainer();
81 log
.debug(plexusContainer
.getContext().getContextData());
82 plexusContainer
.dispose();
85 public void testAether() {
87 RepositorySystem repoSystem
= createRepositorySystem();
89 RepositorySystemSession session
= createRepositorySystemSession(repoSystem
);
91 Dependency dependency
= new Dependency(new DefaultArtifact(
92 "org.argeo.slc.dep:org.argeo.slc.dep.sdk:0.13.1-SNAPSHOT"),
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;
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();
109 // repoSystem.resolveDependencies(session, node, null);
111 PreorderNodeListGenerator nlg
= new PreorderNodeListGenerator();
114 for (Artifact artifact
: nlg
.getArtifacts(true)) {
118 AetherUtils
.logDependencyNode(0, node
);
119 // System.out.println(nlg.getClassPath());
121 } catch (Exception e
) {
122 throw new SlcException("Cannot resolve", e
);
127 /** Creates a Maven {@link RepositorySystem}. */
128 public static RepositorySystem
createRepositorySystem() {
130 DefaultServiceLocator locator
= new DefaultServiceLocator();
132 // locator.setServices(WagonProvider.class, new ManualWagonProvider());
133 // locator.addService(RepositoryConnectorFactory.class,
134 // WagonRepositoryConnectorFactory.class);
136 return locator
.getService(RepositorySystem
.class);
137 } catch (Exception e
) {
138 throw new SlcException("Cannot lookup repository system", e
);
142 public static RepositorySystemSession
createRepositorySystemSession(
143 RepositorySystem system
) {
144 // MavenRepositorySystemSession session = new MavenRepositorySystemSession();
145 DefaultRepositorySystemSession session
= MavenRepositorySystemUtils
.newSession();
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());
157 public static void main(String
[] args
) {
158 new MavenManager().init();