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