/** * Resolves the path for an artifact. * * @param artifact the {@link Artifact} requested, must not be {@code null} * @param remoteRepositories remote repositories to be used in addition to the one in context * @return The resolution result, never {@code null}. * @throws {@link ArtifactResolutionException} if the artifact could not be resolved. */ public ArtifactResult resolveArtifact(Artifact artifact, List<RemoteRepository> remoteRepositories) throws ArtifactResolutionException { checkNotNull(artifact, "artifact cannot be null"); final ArtifactRequest request = new ArtifactRequest(artifact, resolutionContext.getRemoteRepositories(), null); // Has to set authentication to these remote repositories as they may come from a pom descriptor remoteRepositories.forEach(remoteRepository -> { RemoteRepository authenticatedRemoteRepository = setAuthentication(remoteRepository); if (!request.getRepositories().contains(authenticatedRemoteRepository)) { request.addRepository(authenticatedRemoteRepository); } }); return repositoryState.getSystem().resolveArtifact(repositoryState.getSession(), request); }
@Override public String toString() { return getArtifact() + " < " + getRepositories(); }
@Override public String toString() { return getArtifact() + " < " + getRepositories(); }
DefaultArtifact artifact = new DefaultArtifact(coordinate); Artifact pomArtifact = new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), "pom", artifact.getVersion()); ArtifactRequest request = new ArtifactRequest(pomArtifact, Arrays.asList(aetherSession.getRemoteRepository()), null); pomArtifact = aetherSession.getRepoSystem().resolveArtifact(session, request).getArtifact(); ModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance(); ModelBuildingRequest buildingRequest = new DefaultModelBuildingRequest(); buildingRequest.setPomFile(pomArtifact.getFile()); buildingRequest.setProcessPlugins(true); buildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); Constructor<?> constr = Class.forName("org.apache.maven.repository.internal.DefaultModelResolver").getConstructors()[0]; constr.setAccessible(true); ModelResolver modelResolver = (ModelResolver) constr.newInstance(session, null, null, serviceLocator.getService(ArtifactResolver.class), serviceLocator.getService(VersionRangeResolver.class), serviceLocator.getService(RemoteRepositoryManager.class), request.getRepositories()); buildingRequest.setModelResolver(modelResolver); Model model = modelBuilder.build(buildingRequest).getEffectiveModel(); Xpp3Dom pluginConfiguration = (Xpp3Dom) model.getBuild().getPluginsAsMap().get("com.company.group:my-plugin").getConfiguration(); Xpp3Dom myConfig = pluginConfiguration.getChild("myConfig"); System.out.println(myConfig.getChild("somePropName").getValue()); // prints "someProp"
/** * Resolves the path for an artifact. * * @param artifact the {@link Artifact} requested, must not be {@code null} * @param remoteRepositories remote repositories to be used in addition to the one in context * @return The resolution result, never {@code null}. * @throws {@link ArtifactResolutionException} if the artifact could not be resolved. */ public ArtifactResult resolveArtifact(Artifact artifact, List<RemoteRepository> remoteRepositories) throws ArtifactResolutionException { checkNotNull(artifact, "artifact cannot be null"); final ArtifactRequest request = new ArtifactRequest(artifact, resolutionContext.getRemoteRepositories(), null); // Has to set authentication to these remote repositories as they may come from a pom descriptor remoteRepositories.forEach(remoteRepository -> { RemoteRepository authenticatedRemoteRepository = setAuthentication(remoteRepository); if (!request.getRepositories().contains(authenticatedRemoteRepository)) { request.addRepository(authenticatedRemoteRepository); } }); return repositoryState.getSystem().resolveArtifact(repositoryState.getSession(), request); }
List<RemoteRepository> repos = request.getRepositories();
List<RemoteRepository> repos = request.getRepositories();