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.util.Collections;
25 import java.util.List;
26
27 import org.apache.maven.SimpleLookup;
28 import org.apache.maven.bridge.MavenRepositorySystem;
29 import org.apache.maven.execution.DefaultMavenExecutionRequest;
30 import org.apache.maven.execution.DefaultMavenExecutionResult;
31 import org.apache.maven.execution.MavenExecutionRequest;
32 import org.apache.maven.execution.MavenSession;
33 import org.apache.maven.internal.impl.DefaultRepositoryFactory;
34 import org.apache.maven.internal.impl.DefaultSession;
35 import org.apache.maven.internal.impl.InternalSession;
36 import org.apache.maven.project.DefaultProjectBuildingRequest;
37 import org.apache.maven.project.ProjectBuilder;
38 import org.apache.maven.project.ProjectBuildingResult;
39 import org.apache.maven.resolver.RepositorySystemSessionFactory;
40 import org.codehaus.plexus.testing.PlexusTest;
41 import org.eclipse.aether.RepositorySystem;
42 import org.eclipse.aether.RepositorySystemSession;
43 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
44 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
45 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
46 import org.junit.jupiter.api.Test;
47
48 import static org.junit.jupiter.api.Assertions.assertEquals;
49
50 @PlexusTest
51 public class ModelBuilderTest {
52
53 @Inject
54 ProjectBuilder projectBuilder;
55
56 @Inject
57 MavenRepositorySystem mavenRepositorySystem;
58
59 @Inject
60 RepositorySystemSessionFactory repositorySessionFactory;
61
62 @Inject
63 RepositorySystem repositorySystem;
64
65 @Test
66 void testModelBuilder() throws Exception {
67 MavenExecutionRequest mavenRequest = new DefaultMavenExecutionRequest();
68 mavenRequest.setLocalRepository(mavenRepositorySystem.createLocalRepository(new File("target/test-repo/")));
69
70 DefaultProjectBuildingRequest request = new DefaultProjectBuildingRequest();
71 RepositorySystemSession.CloseableSession rsession = repositorySessionFactory
72 .newRepositorySessionBuilder(mavenRequest)
73 .build();
74 request.setRepositorySession(rsession);
75 MavenSession msession = new MavenSession(rsession, mavenRequest, new DefaultMavenExecutionResult());
76 InternalSession session = new DefaultSession(
77 msession,
78 repositorySystem,
79 null,
80 mavenRepositorySystem,
81 new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
82 new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
83 null);
84 InternalSession.associate(rsession, session);
85
86 List<ProjectBuildingResult> results = projectBuilder.build(
87 Collections.singletonList(new File("src/test/resources/projects/tree/pom.xml")), true, request);
88
89 assertEquals(3, results.size());
90 }
91 }