1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.apache.rat.mp;
24
25 import java.io.File;
26 import java.util.Arrays;
27
28 import org.apache.maven.DefaultMaven;
29 import org.apache.maven.Maven;
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.MavenExecutionRequestPopulator;
34 import org.apache.maven.execution.MavenExecutionResult;
35 import org.apache.maven.execution.MavenSession;
36 import org.apache.maven.plugin.Mojo;
37 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
38 import org.apache.maven.project.MavenProject;
39 import org.apache.maven.project.ProjectBuilder;
40 import org.apache.maven.project.ProjectBuildingRequest;
41 import org.eclipse.aether.DefaultRepositorySystemSession;
42 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
43 import org.eclipse.aether.repository.LocalRepository;
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 public abstract class BetterAbstractMojoTestCase extends AbstractMojoTestCase {
60
61 protected MavenSession newMavenSession() {
62 try {
63 MavenExecutionRequest request = new DefaultMavenExecutionRequest();
64 MavenExecutionResult result = new DefaultMavenExecutionResult();
65
66
67 MavenExecutionRequestPopulator populator;
68 populator = getContainer().lookup( MavenExecutionRequestPopulator.class );
69 populator.populateDefaults( request );
70
71
72
73 request.setSystemProperties( System.getProperties() );
74
75
76
77
78 DefaultMaven maven = (DefaultMaven) getContainer().lookup( Maven.class );
79 DefaultRepositorySystemSession repoSession =
80 (DefaultRepositorySystemSession) maven.newRepositorySession( request );
81 repoSession.setLocalRepositoryManager(
82 new SimpleLocalRepositoryManagerFactory().newInstance(repoSession,
83 new LocalRepository( request.getLocalRepository().getBasedir() ) ));
84
85 MavenSession session = new MavenSession( getContainer(),
86 repoSession,
87 request, result );
88 return session;
89 } catch (Exception e) {
90 throw new RuntimeException(e);
91 }
92 }
93
94
95
96 @Override
97 protected MavenSession newMavenSession(MavenProject project) {
98 MavenSession session = newMavenSession();
99 session.setCurrentProject( project );
100 session.setProjects( Arrays.asList( project ) );
101 return session;
102 }
103
104
105
106 protected Mojo lookupConfiguredMojo(File pom, String goal) throws Exception {
107 assertNotNull( pom );
108 assertTrue( pom.exists() );
109
110 ProjectBuildingRequest buildingRequest = newMavenSession().getProjectBuildingRequest();
111 ProjectBuilder projectBuilder = lookup(ProjectBuilder.class);
112 MavenProject project = projectBuilder.build(pom, buildingRequest).getProject();
113
114 return lookupConfiguredMojo(project, goal);
115 }
116
117
118 }