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
24 import org.apache.commons.lang3.Validate;
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 = Validate.notNull( project, "project cannot be null" );
59 this.projectBuildingHelper = Validate.notNull( projectBuildingHelper, "projectBuildingHelper cannot be null" );
60 this.projectBuildingRequest =
61 Validate.notNull( projectBuildingRequest, "projectBuildingRequest cannot be null" );
62 this.remoteRepositories = projectBuildingRequest.getRemoteRepositories();
63 this.pluginRepositories = projectBuildingRequest.getPluginArtifactRepositories();
64 }
65
66
67
68
69
70
71 public MavenProject getProject()
72 {
73 return project;
74 }
75
76 @Override
77 public void buildExtensionsAssembled( ModelBuildingEvent event )
78 {
79 Model model = event.getModel();
80
81 try
82 {
83 pluginRepositories =
84 projectBuildingHelper.createArtifactRepositories( model.getPluginRepositories(), pluginRepositories,
85 projectBuildingRequest );
86 }
87 catch ( Exception e )
88 {
89 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
90 .setMessage( "Invalid plugin repository: " + e.getMessage() )
91 .setException( e ) );
92 }
93 project.setPluginArtifactRepositories( pluginRepositories );
94
95 if ( event.getRequest().isProcessPlugins() )
96 {
97 try
98 {
99 ProjectRealmCache.CacheRecord record =
100 projectBuildingHelper.createProjectRealm( project, model, projectBuildingRequest );
101
102 project.setClassRealm( record.realm );
103 project.setExtensionDependencyFilter( record.extensionArtifactFilter );
104 }
105 catch ( PluginResolutionException | PluginManagerException | PluginVersionResolutionException e )
106 {
107 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
108 .setMessage( "Unresolveable build extension: " + e.getMessage() )
109 .setException( e ) );
110 }
111
112 projectBuildingHelper.selectProjectRealm( project );
113 }
114
115
116 try
117 {
118 remoteRepositories =
119 projectBuildingHelper.createArtifactRepositories( model.getRepositories(), remoteRepositories,
120 projectBuildingRequest );
121 }
122 catch ( Exception e )
123 {
124 event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
125 .setMessage( "Invalid artifact repository: " + e.getMessage() )
126 .setException( e ) );
127 }
128 project.setRemoteArtifactRepositories( remoteRepositories );
129 }
130
131 }