Search in sources :

Example 1 with MavenRepositorySystemSession

use of org.motechproject.admin.service.impl.MavenRepositorySystemSession in project motech by motech.

the class ModuleAdminServiceImpl method resolveDependencies.

private List<ArtifactResult> resolveDependencies(Dependency dependency, PomInformation pomInformation) throws RepositoryException {
    LOGGER.info("Resolving dependencies for {}", dependency);
    org.apache.maven.repository.internal.DefaultServiceLocator locator = new org.apache.maven.repository.internal.DefaultServiceLocator();
    locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class);
    locator.setServices(WagonProvider.class, new HttpWagonProvider());
    RepositorySystem system = locator.getService(RepositorySystem.class);
    MavenRepositorySystemSession mvnRepository = new MavenRepositorySystemSession();
    mvnRepository.setLocalRepositoryManager(system.newLocalRepositoryManager(new LocalRepository(System.getProperty("java.io.tmpdir") + "/repo")));
    RemoteRepository remoteRepository = new RemoteRepository("central", "default", "http://nexus.motechproject.org/content/repositories/public");
    CollectRequest collectRequest = new CollectRequest();
    if (pomInformation != null) {
        String version = parseDependencyVersion(dependency, mvnRepository, system, remoteRepository, pomInformation);
        String groupId = parseDependencyGroupId(dependency, mvnRepository, system, remoteRepository, pomInformation);
        Artifact artifact = dependency.getArtifact();
        Artifact updatedArtifact = new DefaultArtifact(groupId, artifact.getArtifactId(), artifact.getClassifier(), artifact.getExtension(), version);
        // The method setArtifact instead of updating dependency object, creates new dependency object with the given artifact
        // NO CHECKSTYLE ParameterAssignmentCheck
        dependency = dependency.setArtifact(updatedArtifact);
        if (pomInformation.getRepositories() != null) {
            for (RemoteRepository repository : pomInformation.getRepositories()) {
                collectRequest.addRepository(repository);
            }
        }
    }
    collectRequest.setRoot(dependency);
    collectRequest.addRepository(remoteRepository);
    DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));
    try {
        LOGGER.debug("Sending dependency request");
        return system.resolveDependencies(mvnRepository, dependencyRequest).getArtifactResults();
    } catch (RuntimeException e) {
        LOGGER.error("Unable to resolve dependencies for {}", dependency.toString(), e);
        return Collections.emptyList();
    }
}
Also used : LocalRepository(org.sonatype.aether.repository.LocalRepository) RemoteRepository(org.sonatype.aether.repository.RemoteRepository) MavenRepositorySystemSession(org.motechproject.admin.service.impl.MavenRepositorySystemSession) CollectRequest(org.sonatype.aether.collection.CollectRequest) Artifact(org.sonatype.aether.artifact.Artifact) DefaultArtifact(org.sonatype.aether.util.artifact.DefaultArtifact) RepositorySystem(org.sonatype.aether.RepositorySystem) DependencyRequest(org.sonatype.aether.resolution.DependencyRequest) DefaultArtifact(org.sonatype.aether.util.artifact.DefaultArtifact)

Aggregations

MavenRepositorySystemSession (org.motechproject.admin.service.impl.MavenRepositorySystemSession)1 RepositorySystem (org.sonatype.aether.RepositorySystem)1 Artifact (org.sonatype.aether.artifact.Artifact)1 CollectRequest (org.sonatype.aether.collection.CollectRequest)1 LocalRepository (org.sonatype.aether.repository.LocalRepository)1 RemoteRepository (org.sonatype.aether.repository.RemoteRepository)1 DependencyRequest (org.sonatype.aether.resolution.DependencyRequest)1 DefaultArtifact (org.sonatype.aether.util.artifact.DefaultArtifact)1