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