001 package org.apache.maven.project;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.util.ArrayList;
023 import java.util.Date;
024 import java.util.List;
025 import java.util.Properties;
026
027 import org.apache.maven.artifact.repository.ArtifactRepository;
028 import org.apache.maven.model.Profile;
029 import org.apache.maven.model.building.ModelBuildingRequest;
030 import org.eclipse.aether.RepositorySystemSession;
031
032 public class DefaultProjectBuildingRequest
033 implements ProjectBuildingRequest
034 {
035
036 private RepositorySystemSession repositorySession;
037
038 private ArtifactRepository localRepository;
039
040 private List<ArtifactRepository> remoteRepositories;
041
042 private List<ArtifactRepository> pluginArtifactRepositories;
043
044 private MavenProject project;
045
046 private int validationLevel = ModelBuildingRequest.VALIDATION_LEVEL_STRICT;
047
048 private boolean processPlugins;
049
050 private List<Profile> profiles;
051
052 private List<String> activeProfileIds;
053
054 private List<String> inactiveProfileIds;
055
056 private Properties systemProperties;
057
058 private Properties userProperties;
059
060 private Date buildStartTime;
061
062 private boolean resolveDependencies;
063
064 private RepositoryMerging repositoryMerging = RepositoryMerging.POM_DOMINANT;
065
066 public DefaultProjectBuildingRequest()
067 {
068 processPlugins = true;
069 profiles = new ArrayList<Profile>();
070 activeProfileIds = new ArrayList<String>();
071 inactiveProfileIds = new ArrayList<String>();
072 systemProperties = new Properties();
073 userProperties = new Properties();
074 remoteRepositories = new ArrayList<ArtifactRepository>();
075 pluginArtifactRepositories = new ArrayList<ArtifactRepository>();
076 }
077
078 public DefaultProjectBuildingRequest( ProjectBuildingRequest request )
079 {
080 this();
081 setProcessPlugins( request.isProcessPlugins() );
082 setProfiles( request.getProfiles() );
083 setActiveProfileIds( request.getActiveProfileIds() );
084 setInactiveProfileIds( request.getInactiveProfileIds() );
085 setSystemProperties( request.getSystemProperties() );
086 setUserProperties( request.getUserProperties() );
087 setRemoteRepositories( request.getRemoteRepositories() );
088 setPluginArtifactRepositories( request.getPluginArtifactRepositories() );
089 setRepositorySession( request.getRepositorySession() );
090 setLocalRepository( request.getLocalRepository() );
091 setBuildStartTime( request.getBuildStartTime() );
092 setProject( request.getProject() );
093 setResolveDependencies( request.isResolveDependencies() );
094 setValidationLevel( request.getValidationLevel() );
095 }
096
097 public MavenProject getProject()
098 {
099 return project;
100 }
101
102 public void setProject( MavenProject mavenProject )
103 {
104 this.project = mavenProject;
105 }
106
107 public ProjectBuildingRequest setLocalRepository( ArtifactRepository localRepository )
108 {
109 this.localRepository = localRepository;
110 return this;
111 }
112
113 public ArtifactRepository getLocalRepository()
114 {
115 return localRepository;
116 }
117
118 public List<ArtifactRepository> getRemoteRepositories()
119 {
120 return remoteRepositories;
121 }
122
123 public ProjectBuildingRequest setRemoteRepositories( List<ArtifactRepository> remoteRepositories )
124 {
125 if ( remoteRepositories != null )
126 {
127 this.remoteRepositories = new ArrayList<ArtifactRepository>( remoteRepositories );
128 }
129 else
130 {
131 this.remoteRepositories.clear();
132 }
133
134 return this;
135 }
136
137 public List<ArtifactRepository> getPluginArtifactRepositories()
138 {
139 return pluginArtifactRepositories;
140 }
141
142 public ProjectBuildingRequest setPluginArtifactRepositories( List<ArtifactRepository> pluginArtifactRepositories )
143 {
144 if ( pluginArtifactRepositories != null )
145 {
146 this.pluginArtifactRepositories = new ArrayList<ArtifactRepository>( pluginArtifactRepositories );
147 }
148 else
149 {
150 this.pluginArtifactRepositories.clear();
151 }
152
153 return this;
154 }
155
156 public Properties getSystemProperties()
157 {
158 return systemProperties;
159 }
160
161 public ProjectBuildingRequest setSystemProperties( Properties systemProperties )
162 {
163 if ( systemProperties != null )
164 {
165 this.systemProperties = new Properties();
166 this.systemProperties.putAll( systemProperties );
167 }
168 else
169 {
170 this.systemProperties.clear();
171 }
172
173 return this;
174 }
175
176 public Properties getUserProperties()
177 {
178 return userProperties;
179 }
180
181 public ProjectBuildingRequest setUserProperties( Properties userProperties )
182 {
183 if ( userProperties != null )
184 {
185 this.userProperties = new Properties();
186 this.userProperties.putAll( userProperties );
187 }
188 else
189 {
190 this.userProperties.clear();
191 }
192
193 return this;
194 }
195
196 public boolean isProcessPlugins()
197 {
198 return processPlugins;
199 }
200
201 public ProjectBuildingRequest setProcessPlugins( boolean processPlugins )
202 {
203 this.processPlugins = processPlugins;
204 return this;
205 }
206
207 public ProjectBuildingRequest setResolveDependencies( boolean resolveDependencies )
208 {
209 this.resolveDependencies = resolveDependencies;
210 return this;
211 }
212
213 public boolean isResolveDependencies()
214 {
215 return resolveDependencies;
216 }
217
218 public ProjectBuildingRequest setValidationLevel( int validationLevel )
219 {
220 this.validationLevel = validationLevel;
221 return this;
222 }
223
224 public int getValidationLevel()
225 {
226 return validationLevel;
227 }
228
229 public List<String> getActiveProfileIds()
230 {
231 return activeProfileIds;
232 }
233
234 public void setActiveProfileIds( List<String> activeProfileIds )
235 {
236 if ( activeProfileIds != null )
237 {
238 this.activeProfileIds = new ArrayList<String>( activeProfileIds );
239 }
240 else
241 {
242 this.activeProfileIds.clear();
243 }
244 }
245
246 public List<String> getInactiveProfileIds()
247 {
248 return inactiveProfileIds;
249 }
250
251 public void setInactiveProfileIds( List<String> inactiveProfileIds )
252 {
253 if ( inactiveProfileIds != null )
254 {
255 this.inactiveProfileIds = new ArrayList<String>( inactiveProfileIds );
256 }
257 else
258 {
259 this.inactiveProfileIds.clear();
260 }
261 }
262
263 public void setProfiles( List<Profile> profiles )
264 {
265 if ( profiles != null )
266 {
267 this.profiles = new ArrayList<Profile>( profiles );
268 }
269 else
270 {
271 this.profiles.clear();
272 }
273 }
274
275 public void addProfile( Profile profile )
276 {
277 profiles.add( profile );
278 }
279
280 public List<Profile> getProfiles()
281 {
282 return profiles;
283 }
284
285 public Date getBuildStartTime()
286 {
287 return buildStartTime;
288 }
289
290 public void setBuildStartTime( Date buildStartTime )
291 {
292 this.buildStartTime = buildStartTime;
293 }
294
295 public RepositorySystemSession getRepositorySession()
296 {
297 return repositorySession;
298 }
299
300 public DefaultProjectBuildingRequest setRepositorySession( RepositorySystemSession repositorySession )
301 {
302 this.repositorySession = repositorySession;
303 return this;
304 }
305
306 public DefaultProjectBuildingRequest setRepositoryMerging( RepositoryMerging repositoryMerging )
307 {
308 if ( repositoryMerging == null )
309 {
310 throw new IllegalArgumentException( "repository merge mode not specified" );
311 }
312 this.repositoryMerging = repositoryMerging;
313 return this;
314 }
315
316 public RepositoryMerging getRepositoryMerging()
317 {
318 return repositoryMerging;
319 }
320
321 }