1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model;
20
21 import javax.inject.Inject;
22
23 import java.io.File;
24 import java.nio.file.Paths;
25 import java.util.Collections;
26 import java.util.List;
27
28 import org.apache.maven.SimpleLookup;
29 import org.apache.maven.bridge.MavenRepositorySystem;
30 import org.apache.maven.execution.DefaultMavenExecutionRequest;
31 import org.apache.maven.execution.DefaultMavenExecutionResult;
32 import org.apache.maven.execution.MavenExecutionRequest;
33 import org.apache.maven.execution.MavenSession;
34 import org.apache.maven.impl.DefaultRepositoryFactory;
35 import org.apache.maven.impl.InternalSession;
36 import org.apache.maven.impl.cache.DefaultRequestCacheFactory;
37 import org.apache.maven.internal.impl.DefaultSession;
38 import org.apache.maven.project.DefaultProjectBuildingRequest;
39 import org.apache.maven.project.ProjectBuilder;
40 import org.apache.maven.project.ProjectBuildingResult;
41 import org.apache.maven.resolver.RepositorySystemSessionFactory;
42 import org.codehaus.plexus.testing.PlexusTest;
43 import org.eclipse.aether.RepositorySystem;
44 import org.eclipse.aether.RepositorySystemSession;
45 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
46 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
47 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
48 import org.junit.jupiter.api.Test;
49
50 import static org.junit.jupiter.api.Assertions.assertEquals;
51
52 @PlexusTest
53 public class ModelBuilderTest {
54
55 @Inject
56 ProjectBuilder projectBuilder;
57
58 @Inject
59 MavenRepositorySystem mavenRepositorySystem;
60
61 @Inject
62 RepositorySystemSessionFactory repositorySessionFactory;
63
64 @Inject
65 RepositorySystem repositorySystem;
66
67 @Test
68 void testModelBuilder() throws Exception {
69 MavenExecutionRequest mavenRequest = new DefaultMavenExecutionRequest();
70 mavenRequest.setLocalRepository(mavenRepositorySystem.createLocalRepository(new File("target/test-repo/")));
71 mavenRequest.setRootDirectory(Paths.get("src/test/resources/projects/tree"));
72
73 DefaultProjectBuildingRequest request = new DefaultProjectBuildingRequest();
74 RepositorySystemSession.CloseableSession rsession = repositorySessionFactory
75 .newRepositorySessionBuilder(mavenRequest)
76 .build();
77 request.setRepositorySession(rsession);
78 MavenSession msession = new MavenSession(rsession, mavenRequest, new DefaultMavenExecutionResult());
79 InternalSession session = new DefaultSession(
80 msession,
81 repositorySystem,
82 null,
83 mavenRepositorySystem,
84 new SimpleLookup(List.of(
85 new DefaultRequestCacheFactory(),
86 new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
87 new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
88 null);
89 InternalSession.associate(rsession, session);
90
91 List<ProjectBuildingResult> results = projectBuilder.build(
92 Collections.singletonList(new File("src/test/resources/projects/tree/pom.xml")), true, request);
93
94 assertEquals(3, results.size());
95 }
96 }