1   package org.apache.maven;
2   
3   import java.io.File;
4   import java.util.Collections;
5   import java.util.List;
6   import java.util.Properties;
7   import java.util.Set;
8   
9   import org.apache.maven.artifact.Artifact;
10  import org.apache.maven.execution.MavenSession;
11  import org.apache.maven.model.Exclusion;
12  import org.apache.maven.project.MavenProject;
13  import org.codehaus.plexus.component.annotations.Requirement;
14  
15  public class ProjectDependenciesResolverTest
16      extends AbstractCoreMavenComponentTestCase
17  {
18      @Requirement
19      private ProjectDependenciesResolver resolver;
20  
21      protected void setUp()
22          throws Exception
23      {
24          super.setUp();
25          resolver = lookup( ProjectDependenciesResolver.class );
26      }
27  
28      @Override
29      protected void tearDown()
30          throws Exception
31      {
32          resolver = null;
33          super.tearDown();
34      }
35  
36      protected String getProjectsDirectory()
37      {
38          return "src/test/projects/project-dependencies-resolver";
39      }
40  
41      /*
42      public void testExclusionsInDependencies()
43          throws Exception
44      {
45          MavenSession session = createMavenSession( null );
46          MavenProject project = session.getCurrentProject();
47  
48          Exclusion exclusion = new Exclusion();
49          exclusion.setGroupId( "org.apache.maven.its" );
50          exclusion.setArtifactId( "a" );
51  
52          new ProjectBuilder( project ).addDependency( "org.apache.maven.its", "b", "0.1", Artifact.SCOPE_RUNTIME,
53                                                       exclusion );
54          
55          Set<Artifact> artifactDependencies =
56              resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), session );
57          assertEquals( 0, artifactDependencies.size() );
58  
59          artifactDependencies = resolver.resolve( project, Collections.singleton( Artifact.SCOPE_RUNTIME ), session );
60          assertEquals( 1, artifactDependencies.size() );
61          assertEquals( "b", artifactDependencies.iterator().next().getArtifactId() );
62      }
63      */
64      
65      public void testSystemScopeDependencies()
66          throws Exception
67      {
68          MavenSession session = createMavenSession( null );
69          MavenProject project = session.getCurrentProject();
70  
71          new ProjectBuilder( project )
72              .addDependency( "com.mycompany", "system-dependency", "1.0", Artifact.SCOPE_SYSTEM, new File( getBasedir(), "pom.xml" ).getAbsolutePath() );
73  
74          Set<Artifact> artifactDependencies =
75              resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), session );
76          assertEquals( 1, artifactDependencies.size() );
77      }  
78      
79      public void testSystemScopeDependencyIsPresentInTheCompileClasspathElements()
80          throws Exception
81      {
82          File pom = getProject( "it0063" );
83  
84          Properties eps = new Properties();
85          eps.setProperty( "jre.home", new File( pom.getParentFile(), "jdk/jre" ).getPath() );
86  
87          MavenSession session = createMavenSession( pom, eps );
88          MavenProject project = session.getCurrentProject();
89  
90          project.setArtifacts( resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), session ) );
91                  
92          List<String> elements = project.getCompileClasspathElements();
93          assertEquals( 2, elements.size() );
94          
95          List<Artifact> artifacts = project.getCompileArtifacts();
96          assertEquals( 1, artifacts.size() );
97          assertTrue( artifacts.get( 0 ).getFile().getName().endsWith( "tools.jar" ) );
98      }
99  }