1 package org.apache.maven.project;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.List;
23 import java.util.Objects;
24
25 import org.apache.maven.artifact.repository.ArtifactRepository;
26 import org.apache.maven.model.Model;
27 import org.apache.maven.model.building.AbstractModelBuildingListener;
28 import org.apache.maven.model.building.ModelBuildingEvent;
29 import org.apache.maven.model.building.ModelProblem.Severity;
30 import org.apache.maven.model.building.ModelProblem.Version;
31 import org.apache.maven.model.building.ModelProblemCollectorRequest;
32 import org.apache.maven.plugin.PluginManagerException;
33 import org.apache.maven.plugin.PluginResolutionException;
34 import org.apache.maven.plugin.version.PluginVersionResolutionException;
35
36
37
38
39
40
41 public class DefaultModelBuildingListener
42 extends AbstractModelBuildingListener
43 {
44
45 private MavenProject project;
46
47 private ProjectBuildingHelper projectBuildingHelper;
48
49 private ProjectBuildingRequest projectBuildingRequest;
50
51 private List<ArtifactRepository> remoteRepositories;
52
53 private List<ArtifactRepository> pluginRepositories;
54
55 public DefaultModelBuildingListener( MavenProject project, ProjectBuildingHelper projectBuildingHelper,
56 ProjectBuildingRequest projectBuildingRequest )
57 {
58 this.project = Objects.requireNonNull( project, "project cannot be null" );
59 this.projectBuildingHelper =
60 Objects.requireNonNull( projectBuildingHelper, "projectBuildingHelper cannot be null" );
61 this.projectBuildingRequest =
62 Objects.requireNonNull( projectBuildingRequest, "projectBuildingRequest cannot be null" );
63 this.remoteRepositories = projectBuildingRequest.getRemoteRepositories();
64 this.pluginRepositories = projectBuildingRequest.getPluginArtifactRepositories();
65 }
66
67
68
69
70
71
72 public MavenProject getProject()
73 {
74 return project;
75 }
76
77 @Override
78 public void buildExtensionsAssembled( ModelBuildingEvent event )
79 {
80 Model model = event.getModel();
81
82 try
83 {
84 pluginRepositories =
85 projectBuildingHelper.createArtifactRepositories( model.getPluginRepositories(), pluginRepositories,
86 projectBuildingRequest );
87 }
88 catch ( Exception e )
89 {
90 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
91 .setMessage( "Invalid plugin repository: " + e.getMessage() )
92 .setException( e ) );
93 }
94 project.setPluginArtifactRepositories( pluginRepositories );
95
96 if ( event.getRequest().isProcessPlugins() )
97 {
98 try
99 {
100 ProjectRealmCache.CacheRecord record =
101 projectBuildingHelper.createProjectRealm( project, model, projectBuildingRequest );
102
103 project.setClassRealm( record.getRealm() );
104 project.setExtensionDependencyFilter( record.getExtensionArtifactFilter() );
105 }
106 catch ( PluginResolutionException | PluginManagerException | PluginVersionResolutionException e )
107 {
108 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
109 .setMessage( "Unresolveable build extension: " + e.getMessage() )
110 .setException( e ) );
111 }
112
113 projectBuildingHelper.selectProjectRealm( project );
114 }
115
116
117 try
118 {
119 remoteRepositories =
120 projectBuildingHelper.createArtifactRepositories( model.getRepositories(), remoteRepositories,
121 projectBuildingRequest );
122 }
123 catch ( Exception e )
124 {
125 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
126 .setMessage( "Invalid artifact repository: " + e.getMessage() )
127 .setException( e ) );
128 }
129 project.setRemoteArtifactRepositories( remoteRepositories );
130 }
131
132 }