View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.project;
20  
21  import java.io.File;
22  import java.io.FileNotFoundException;
23  import java.net.URISyntaxException;
24  import java.util.Collections;
25  
26  import org.apache.maven.artifact.Artifact;
27  import org.apache.maven.artifact.repository.ArtifactRepository;
28  import org.codehaus.plexus.component.annotations.Component;
29  
30  @Component(role = ProjectBuilder.class, hint = "classpath")
31  public class TestProjectBuilder extends DefaultProjectBuilder {
32  
33      @Override
34      public ProjectBuildingResult build(Artifact artifact, ProjectBuildingRequest request)
35              throws ProjectBuildingException {
36          if ("maven-test".equals(artifact.getGroupId())) {
37              String scope = artifact.getArtifactId().substring("scope-".length());
38  
39              try {
40                  artifact.setFile(ProjectClasspathTest.getFileForClasspathResource(
41                          ProjectClasspathTest.dir + "transitive-" + scope + "-dep.xml"));
42              } catch (FileNotFoundException | URISyntaxException e) {
43                  throw new IllegalStateException("Missing test POM for " + artifact);
44              }
45          }
46          if (artifact.getFile() == null) {
47              MavenProject project = new MavenProject();
48              project.setArtifact(artifact);
49              return new DefaultProjectBuildingResult(project, null, null);
50          }
51          return build(artifact.getFile(), request);
52      }
53  
54      @Override
55      public ProjectBuildingResult build(File pomFile, ProjectBuildingRequest configuration)
56              throws ProjectBuildingException {
57          ProjectBuildingResult result = super.build(pomFile, configuration);
58  
59          result.getProject().setRemoteArtifactRepositories(Collections.<ArtifactRepository>emptyList());
60  
61          return result;
62      }
63  }