private void process( DefaultDependencyResolutionResult result, Collection<ArtifactResult> results ) { for ( ArtifactResult ar : results ) { DependencyNode node = ar.getRequest().getDependencyNode(); if ( ar.isResolved() ) { result.addResolvedDependency( node.getDependency() ); } else { result.setResolutionErrors( node.getDependency(), ar.getExceptions() ); } } }
/** * Indicates whether the requested artifact is not present in any of the specified repositories. * * @return {@code true} if the artifact is not present in any repository, {@code false} otherwise. */ public boolean isMissing() { for ( Exception e : getExceptions() ) { if ( !( e instanceof ArtifactNotFoundException ) ) { return false; } } return !isResolved(); }
/** * Indicates whether the requested artifact is not present in any of the specified repositories. * * @return {@code true} if the artifact is not present in any repository, {@code false} otherwise. */ public boolean isMissing() { for ( Exception e : getExceptions() ) { if ( !( e instanceof ArtifactNotFoundException ) ) { return false; } } return !isResolved(); }
for ( ArtifactResult result : results ) if ( !result.isResolved() )
for ( ArtifactResult result : results ) if ( !result.isResolved() )
private static boolean resolve(final RepositorySystemSession session, final Artifact artifact) { final ArtifactRequest artifactRequest = new ArtifactRequest(); final org.eclipse.aether.artifact.Artifact jarArtifact = new org.eclipse.aether.artifact.DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getClassifier(), "jar", artifact.getVersion()); artifactRequest.setArtifact(jarArtifact); try { ArtifactResult result = Aether.getAether().getSystem().resolveArtifact(session, artifactRequest); return result != null && result.isResolved(); } catch (final Exception are) { log.info(are.getMessage(), are); return false; } }
public FileNode resolve(Artifact artifact, List<RemoteRepository> remoteRepositories) throws ArtifactResolutionException { ArtifactRequest request; ArtifactResult result; request = new ArtifactRequest(artifact, remoteRepositories, null); result = repositorySystem.resolveArtifact(repositorySession, request); if (!result.isResolved()) { throw new ArtifactResolutionException(new ArrayList<ArtifactResult>()); // TODO } return world.file(result.getArtifact().getFile()); }
/** * this method resolves maven artifact from all configured repositories using the maven coordinates * * @param artifact - the maven coordinates of the artifact * @return {@link Optional} {@link File} pointing to the resolved artifact in local repository */ protected Optional<File> resolveArtifact(String artifact) { ArtifactRequest artifactRequest = new ArtifactRequest(); artifactRequest.setArtifact(new org.eclipse.aether.artifact.DefaultArtifact(artifact)); try { ArtifactResult artifactResult = repositorySystem.resolveArtifact(repositorySystemSession, artifactRequest); if (artifactResult.isResolved()) { getLog().debug("Resolved :" + artifactResult.getArtifact().getArtifactId()); return Optional.of(artifactResult.getArtifact().getFile()); } else { getLog().error("Unable to resolve:" + artifact); } } catch (ArtifactResolutionException e) { getLog().error("Unable to resolve:" + artifact); } return Optional.empty(); }
@Override public Path resolve(final RepositorySystemSession session, final List<RemoteRepository> repositories, final ArtifactName name) { final ArtifactResult result; try { final ArtifactRequest request = new ArtifactRequest(); final Artifact defaultArtifact = new DefaultArtifact(name.getGroupId(), name.getArtifactId(), name.getClassifier(), name.getPackaging(), name.getVersion()); request.setArtifact(defaultArtifact); request.setRepositories(repositories); result = repoSystem.resolveArtifact(session, request); } catch (ArtifactResolutionException e) { throw new RuntimeException(e.getMessage(), e); } if (!result.isResolved()) { throw new RuntimeException("Failed to resolve artifact " + name); } final Artifact artifact = result.getArtifact(); final File artifactFile; if (artifact == null || (artifactFile = artifact.getFile()) == null) { throw new RuntimeException("Failed to resolve artifact " + name); } return artifactFile.toPath(); } }
@Test public void testLoadDependencyFromVerticleLoaderWhenPresent() throws Exception { String localRepository = System.getProperty("localRepository"); AetherHelper localHelper = new AetherHelper(localRepository); ArtifactResult result = localHelper.resolveArtifact("com.google.guava", "guava", "jar", "17.0"); URLClassLoader loader = new URLClassLoader(new URL[]{result.getArtifact().getFile().toURI().toURL()}, FactoryTest.class.getClassLoader()); loader.loadClass("com.google.common.collect.BiMap"); assertTrue(result.isResolved()); ClassLoader prev = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(loader); try { File testRepo = createMyModuleRepositoryWithDep("testLoadDependencyFromVerticleLoaderWhenPresent"); File emptyRepo = Files.createTempDirectory("vertx").toFile(); emptyRepo.deleteOnExit(); startRemoteServer(createRemoteServer(testRepo)); configureRepos(emptyRepo, "http://localhost:8080/"); vertx.deployVerticle("maven:my:module:1.0::my.serviceA", new DeploymentOptions(), onSuccess(id -> { testComplete(); })); await(); } finally { Thread.currentThread().setContextClassLoader(prev); } }
private Path doResolve(ArtifactRequest request, String coords) throws MavenUniverseException { request.setRepositories(getRepositories()); final ArtifactResult result; try { result = repoSystem.resolveArtifact(getSession(), request); } catch (Exception e) { throw new MavenUniverseException(FpMavenErrors.artifactResolution(coords), e); } if (!result.isResolved()) { throw new MavenUniverseException(FpMavenErrors.artifactResolution(coords)); } if (result.isMissing()) { throw new MavenUniverseException(FpMavenErrors.artifactMissing(coords)); } return Paths.get(result.getArtifact().getFile().toURI()); }
@Test public void testLoadSystemDependencyFromParentLoaderWhenPresent() throws Exception { String localRepository = System.getProperty("localRepository"); AetherHelper localHelper = new AetherHelper(localRepository); ArtifactResult result = localHelper.resolveArtifact("javax.portlet", "portlet-api", "jar", "2.0"); URLClassLoader loader = new URLClassLoader(new URL[]{result.getArtifact().getFile().toURI().toURL()}, FactoryTest.class.getClassLoader()); loader.loadClass("javax.portlet.Portlet"); assertTrue(result.isResolved()); ClassLoader prev = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(loader); try { File testRepo = createMyModuleRepositoryWithSystemDep("testLoadSystemDependencyFromParentLoaderWhenPresent"); File emptyRepo = Files.createTempDirectory("vertx").toFile(); emptyRepo.deleteOnExit(); startRemoteServer(createRemoteServer(testRepo)); configureRepos(emptyRepo, "http://localhost:8080/"); vertx.deployVerticle("maven:my:module:1.0::my.serviceA", new DeploymentOptions().setConfig(new JsonObject().put("loaded_globally", true)), onSuccess(id -> { testComplete(); })); await(); } finally { Thread.currentThread().setContextClassLoader(prev); } }
@Override public File getArtifactFileFromRepository(final GAV gav) { ArtifactRequest request = createArtifactRequest(gav); ArtifactResult result = null; try { result = Aether.getAether().getSystem().resolveArtifact( Aether.getAether().getSession(), request); } catch (ArtifactResolutionException e) { logger.warn(e.getMessage(), e); } if (result == null) { return null; } File artifactFile = null; if (result.isResolved() && !result.isMissing()) { artifactFile = result.getArtifact().getFile(); } return artifactFile; }
@Override public File getArtifactFileFromRepository(final GAV gav) { ArtifactRequest request = createArtifactRequest(gav); ArtifactResult result = null; try { result = Aether.getAether().getSystem().resolveArtifact( Aether.getAether().getSession(), request); } catch (ArtifactResolutionException e) { logger.warn(e.getMessage(), e); } if (result == null) { return null; } File artifactFile = null; if (result.isResolved() && !result.isMissing()) { artifactFile = result.getArtifact().getFile(); } return artifactFile; }
@Override public File getArtifactFileFromRepository(final GAV gav) { ArtifactRequest request = createArtifactRequest(gav); ArtifactResult result = null; try { result = Aether.getAether().getSystem().resolveArtifact( Aether.getAether().getSession(), request); } catch (ArtifactResolutionException e) { logger.warn(e.getMessage(), e); } if (result == null) { return null; } File artifactFile = null; if (result.isResolved() && !result.isMissing()) { artifactFile = result.getArtifact().getFile(); } return artifactFile; }
if (result.isResolved()) { artifact.selectVersion(result.getArtifact().getVersion()); artifact.setFile(result.getArtifact().getFile());
@Override public Path resolve(ArtifactCoords coords) throws ArtifactException { final ArtifactRequest request = new ArtifactRequest(); request.setArtifact(new DefaultArtifact(coords.getGroupId(), coords.getArtifactId(), coords.getClassifier(), coords.getExtension(), coords.getVersion())); final ArtifactResult result; try { result = repoSystem.resolveArtifact(session, request); } catch (org.eclipse.aether.resolution.ArtifactResolutionException e) { throw new ArtifactException(FpMavenErrors.artifactResolution(coords), e); } if (!result.isResolved()) { throw new ArtifactException(FpMavenErrors.artifactResolution(coords)); } if (result.isMissing()) { throw new ArtifactException(FpMavenErrors.artifactMissing(coords)); } return Paths.get(result.getArtifact().getFile().toURI()); }
public List<Artifact> getDependencies(String groupId, String artifactId, String extension, String version) throws Exception { Artifact artifact = new DefaultArtifact(groupId, artifactId, extension, version); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(new Dependency( artifact, "")); collectRequest.setRepositories(Collections.emptyList()); DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE)); DependencyResult dependencyResult = system.resolveDependencies(session, dependencyRequest); List<Artifact> dependencies = new ArrayList<>(); for (ArtifactResult artifactResult : dependencyResult.getArtifactResults()) { if (!artifactResult.isResolved()) { throw new Exception("Could not resolve artifact " + artifactResult.getRequest().getArtifact()); } dependencies.add(artifactResult.getArtifact()); } return dependencies; }
@Override public ArtifactResult loadArtifact(String groupId, String artifactId, String classifier, String extension, String version) { Moment before = X_Time.now(); RepositorySystem repoSystem = this.repoSystem.get(); RepositorySystemSession session = this.session.get(); DefaultArtifact artifact = new DefaultArtifact( groupId,artifactId,classifier, X_String.isEmpty(extension) ? "jar" : extension, version); try { ArtifactRequest request = new ArtifactRequest(artifact, remoteRepos(), null); return repoSystem.resolveArtifact(session, request); } catch (ArtifactResolutionException e) { X_Log.log(getClass(), getLogLevel(), "Resolved? ", e.getResult().isResolved(), e.getResult().getExceptions()); X_Log.log(getClass(), getLogLevel(), "Could not download " + artifact, e); throw X_Debug.rethrow(e); } finally { if (X_Log.loggable(LogLevel.DEBUG)) { X_Log.debug("Resolved: " + artifact.toString() + " in " + X_Time.difference(before)); } } }
@Override public ArtifactSpec resolve(ArtifactSpec spec) { if (spec.file == null) { final DefaultArtifact artifact = new DefaultArtifact(spec.groupId(), spec.artifactId(), spec.classifier(), spec.type(), spec.version()); final LocalArtifactResult localResult = this.session.getLocalRepositoryManager() .find(this.session, new LocalArtifactRequest(artifact, this.remoteRepositories, null)); if (localResult.isAvailable()) { spec.file = localResult.getFile(); } else { try { final ArtifactResult result = resolver.resolveArtifact(this.session, new ArtifactRequest(artifact, this.remoteRepositories, null)); if (result.isResolved()) { spec.file = result.getArtifact().getFile(); } } catch (ArtifactResolutionException e) { System.err.println("ERR " + e); e.printStackTrace(); } } } return spec.file != null ? spec : null; }