1 package org.apache.maven.repository;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 import java.io.File;
19 import java.util.Arrays;
20 import java.util.List;
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.artifact.repository.ArtifactRepository;
24 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
25 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
26 import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
27 import org.apache.maven.execution.DefaultMavenExecutionRequest;
28 import org.apache.maven.execution.DefaultMavenExecutionResult;
29 import org.apache.maven.execution.MavenSession;
30 import org.apache.maven.model.Dependency;
31 import org.apache.maven.model.Repository;
32 import org.apache.maven.model.RepositoryPolicy;
33 import org.apache.maven.plugin.LegacySupport;
34 import org.apache.maven.repository.RepositorySystem;
35 import org.codehaus.plexus.ContainerConfiguration;
36 import org.codehaus.plexus.PlexusTestCase;
37 import org.eclipse.aether.DefaultRepositorySystemSession;
38 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
39 import org.eclipse.aether.repository.LocalRepository;
40
41
42
43
44
45
46 public class LegacyRepositorySystemTest
47 extends PlexusTestCase
48 {
49 private RepositorySystem repositorySystem;
50
51 private ResolutionErrorHandler resolutionErrorHandler;
52
53 @Override
54 protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
55 {
56 super.customizeContainerConfiguration( containerConfiguration );
57 containerConfiguration.setAutoWiring( true );
58 }
59
60 @Override
61 protected void setUp()
62 throws Exception
63 {
64 super.setUp();
65 repositorySystem = lookup( RepositorySystem.class, "default" );
66 resolutionErrorHandler = lookup( ResolutionErrorHandler.class );
67 }
68
69 @Override
70 protected void tearDown()
71 throws Exception
72 {
73 repositorySystem = null;
74 resolutionErrorHandler = null;
75 super.tearDown();
76 }
77
78 protected List<ArtifactRepository> getRemoteRepositories()
79 throws Exception
80 {
81 File repoDir = new File( getBasedir(), "src/test/remote-repo" ).getAbsoluteFile();
82
83 RepositoryPolicy policy = new RepositoryPolicy();
84 policy.setEnabled( true );
85 policy.setChecksumPolicy( "ignore" );
86 policy.setUpdatePolicy( "always" );
87
88 Repository repository = new Repository();
89 repository.setId( RepositorySystem.DEFAULT_REMOTE_REPO_ID );
90 repository.setUrl( "file://" + repoDir.toURI().getPath() );
91 repository.setReleases( policy );
92 repository.setSnapshots( policy );
93
94 return Arrays.asList( repositorySystem.buildArtifactRepository( repository ) );
95 }
96
97 protected ArtifactRepository getLocalRepository()
98 throws Exception
99 {
100 File repoDir = new File( getBasedir(), "target/local-repo" ).getAbsoluteFile();
101
102 return repositorySystem.createLocalRepository( repoDir );
103 }
104
105 public void testThatASystemScopedDependencyIsNotResolvedFromRepositories()
106 throws Exception
107 {
108
109
110
111 Dependency d = new Dependency();
112 d.setGroupId( "org.apache.maven.its" );
113 d.setArtifactId( "b" );
114 d.setVersion( "0.1" );
115 d.setScope( Artifact.SCOPE_COMPILE );
116 Artifact artifact = repositorySystem.createDependencyArtifact( d );
117
118 ArtifactResolutionRequest request = new ArtifactResolutionRequest()
119 .setArtifact( artifact )
120 .setResolveRoot( true )
121 .setResolveTransitively( true )
122 .setRemoteRepositories( getRemoteRepositories() )
123 .setLocalRepository( getLocalRepository() );
124
125 DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
126 LocalRepository localRepo = new LocalRepository( request.getLocalRepository().getBasedir() );
127 session.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( session, localRepo ) );
128 LegacySupport legacySupport = lookup( LegacySupport.class );
129 legacySupport.setSession( new MavenSession( getContainer(), session, new DefaultMavenExecutionRequest(),
130 new DefaultMavenExecutionResult() ) );
131
132 ArtifactResolutionResult result = repositorySystem.resolve( request );
133 resolutionErrorHandler.throwErrors( request, result );
134 assertEquals( 2, result.getArtifacts().size() );
135
136
137
138
139 d.setScope( Artifact.SCOPE_SYSTEM );
140 File file = new File( getBasedir(), "src/test/repository-system/maven-core-2.1.0.jar" );
141 assertTrue( file.exists() );
142 d.setSystemPath( file.getCanonicalPath() );
143
144 artifact = repositorySystem.createDependencyArtifact( d );
145
146
147
148
149
150 request = new ArtifactResolutionRequest()
151 .setArtifact( artifact )
152 .setResolveRoot( true )
153 .setResolveTransitively( true );
154
155 result = repositorySystem.resolve( request );
156 resolutionErrorHandler.throwErrors( request, result );
157 assertEquals( 1, result.getArtifacts().size() );
158
159
160
161
162 file = new File( getBasedir(), "src/test/repository-system/maven-monkey-2.1.0.jar" );
163 assertFalse( file.exists() );
164 d.setSystemPath( file.getCanonicalPath() );
165 artifact = repositorySystem.createDependencyArtifact( d );
166
167
168
169
170
171 request = new ArtifactResolutionRequest()
172 .setArtifact( artifact )
173 .setResolveRoot( true )
174 .setResolveTransitively( true );
175
176 try
177 {
178 result = repositorySystem.resolve( request );
179 resolutionErrorHandler.throwErrors( request, result );
180 }
181 catch( Exception e )
182 {
183 assertTrue( result.hasMissingArtifacts() );
184 }
185 }
186
187 public void testLocalRepositoryBasedir()
188 throws Exception
189 {
190 File localRepoDir = new File( "" ).getAbsoluteFile();
191
192 ArtifactRepository localRepo = repositorySystem.createLocalRepository( localRepoDir );
193
194 String basedir = localRepo.getBasedir();
195
196 assertFalse( basedir.endsWith( "/" ) );
197 assertFalse( basedir.endsWith( "\\" ) );
198
199 assertEquals( localRepoDir, new File( basedir ) );
200
201 assertEquals( localRepoDir.getPath(), basedir );
202 }
203
204 }