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.maven.artifact.repository.ArtifactRepository;
25 import org.apache.maven.model.Model;
26 import org.apache.maven.model.building.AbstractModelBuildingListener;
27 import org.apache.maven.model.building.ModelBuildingEvent;
28 import org.apache.maven.model.building.ModelProblem.Severity;
29 import org.apache.maven.plugin.PluginResolutionException;
30 import org.apache.maven.plugin.version.PluginVersionResolutionException;
31
32
33
34
35
36
37 class DefaultModelBuildingListener
38 extends AbstractModelBuildingListener
39 {
40
41 private MavenProject project;
42
43 private ProjectBuildingHelper projectBuildingHelper;
44
45 private ProjectBuildingRequest projectBuildingRequest;
46
47 private List<ArtifactRepository> remoteRepositories;
48
49 private List<ArtifactRepository> pluginRepositories;
50
51 public DefaultModelBuildingListener( MavenProject project, ProjectBuildingHelper projectBuildingHelper,
52 ProjectBuildingRequest projectBuildingRequest )
53 {
54 if ( project == null )
55 {
56 throw new IllegalArgumentException( "project missing" );
57 }
58 this.project = project;
59
60 if ( projectBuildingHelper == null )
61 {
62 throw new IllegalArgumentException( "project building helper missing" );
63 }
64 this.projectBuildingHelper = projectBuildingHelper;
65
66 if ( projectBuildingRequest == null )
67 {
68 throw new IllegalArgumentException( "project building request missing" );
69 }
70 this.projectBuildingRequest = projectBuildingRequest;
71 this.remoteRepositories = projectBuildingRequest.getRemoteRepositories();
72 this.pluginRepositories = projectBuildingRequest.getPluginArtifactRepositories();
73 }
74
75
76
77
78
79
80 public MavenProject getProject()
81 {
82 return project;
83 }
84
85 @Override
86 public void buildExtensionsAssembled( ModelBuildingEvent event )
87 {
88 Model model = event.getModel();
89
90 try
91 {
92 pluginRepositories =
93 projectBuildingHelper.createArtifactRepositories( model.getPluginRepositories(), pluginRepositories,
94 projectBuildingRequest );
95 }
96 catch ( Exception e )
97 {
98 event.getProblems().add( Severity.ERROR, "Invalid plugin repository: " + e.getMessage(), null, e );
99 }
100 project.setPluginArtifactRepositories( pluginRepositories );
101
102 if ( event.getRequest().isProcessPlugins() )
103 {
104 try
105 {
106 ProjectRealmCache.CacheRecord record =
107 projectBuildingHelper.createProjectRealm( project, model, projectBuildingRequest );
108
109 project.setClassRealm( record.realm );
110 project.setExtensionDependencyFilter( record.extensionArtifactFilter );
111 }
112 catch ( PluginResolutionException e )
113 {
114 event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), null, e );
115 }
116 catch ( PluginVersionResolutionException e )
117 {
118 event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), null, e );
119 }
120
121 projectBuildingHelper.selectProjectRealm( project );
122 }
123
124
125 try
126 {
127 remoteRepositories =
128 projectBuildingHelper.createArtifactRepositories( model.getRepositories(), remoteRepositories,
129 projectBuildingRequest );
130 }
131 catch ( Exception e )
132 {
133 event.getProblems().add( Severity.ERROR, "Invalid artifact repository: " + e.getMessage(), null, e );
134 }
135 project.setRemoteArtifactRepositories( remoteRepositories );
136 }
137
138 }