Esempio n. 1
0
  public List<Artifact> resolveArtifacts(Iterable<? extends Artifact> sourceArtifacts) {
    CollectRequest collectRequest = new CollectRequest();
    for (Artifact sourceArtifact : sourceArtifacts) {
      collectRequest.addDependency(new Dependency(sourceArtifact, JavaScopes.RUNTIME));
    }
    for (RemoteRepository repository : repositories) {
      collectRequest.addRepository(repository);
    }

    DependencyRequest dependencyRequest =
        new DependencyRequest(
            collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));

    return resolveArtifacts(dependencyRequest);
  }
  @Override
  public BundleInformation installFromRepository(String featureId, boolean start) {

    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);

    // RepositorySystem system = null;
    try {
      // system = new DefaultPlexusContainer().lookup(RepositorySystem.class);

      MavenRepositorySystemSession mvnRepository = new MavenRepositorySystemSession();

      mvnRepository.setLocalRepositoryManager(
          system.newLocalRepositoryManager(
              new LocalRepository(System.getProperty("java.io.tmpdir") + "/repo")));

      CollectRequest collectRequest = new CollectRequest();
      collectRequest.setRoot(new Dependency(new DefaultArtifact(featureId), JavaScopes.RUNTIME));
      collectRequest.addRepository(
          new RemoteRepository(
              "central", "default", "http://nexus.motechproject.org/content/repositories/public"));

      DependencyRequest dependencyRequest =
          new DependencyRequest(
              collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));

      BundleInformation bundleInformation = null;
      List<ArtifactResult> artifactResults =
          system.resolveDependencies(mvnRepository, dependencyRequest).getArtifactResults();

      List<Bundle> bundlesInstalled = new ArrayList<>();

      for (ArtifactResult artifact : artifactResults) {
        LOG.info("Installing " + artifact);
        final File bundleFile = artifact.getArtifact().getFile();
        FileInputStream fileInputStream = null;
        try {
          fileInputStream = new FileInputStream(bundleFile);
          final File bundleFileToInstall =
              bundleDirectoryManager.saveBundleStreamToFile(bundleFile.getName(), fileInputStream);
          final Bundle bundle = installBundleFromFile(bundleFileToInstall, false, false);
          if (bundle != null) {
            bundlesInstalled.add(bundle);
          }
        } finally {
          IOUtils.closeQuietly(fileInputStream);
        }
      }

      // start bundles after all bundles installed to avoid any dependency resolution problems.
      if (start) {
        for (Bundle bundle : bundlesInstalled) {
          if (!isFragmentBundle(bundle)) {
            bundle.start();
          }
        }
      }

      return bundleInformation;
    } catch (Exception e) {
      LOG.error("Error while installing bundle and dependencies " + featureId, e);
      throw new MotechException("Cannot install file", e);
    }
  }
Esempio n. 3
0
  public List<Artifact> resolvePom(File pomFile) {
    if (pomFile == null) {
      throw new RuntimeException("pomFile is null");
    }

    MavenProject pom;
    try {
      PlexusContainer container = container();
      org.apache.maven.repository.RepositorySystem lrs =
          container.lookup(org.apache.maven.repository.RepositorySystem.class);
      ProjectBuilder projectBuilder = container.lookup(ProjectBuilder.class);
      ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
      request.setRepositorySession(repositorySystemSession);
      request.setProcessPlugins(false);
      request.setLocalRepository(lrs.createDefaultLocalRepository());
      request.setRemoteRepositories(
          Arrays.asList(new ArtifactRepository[] {lrs.createDefaultRemoteRepository()}.clone()));
      ProjectBuildingResult result = projectBuilder.build(pomFile, request);
      pom = result.getProject();
    } catch (Exception e) {
      if (e instanceof RuntimeException) {
        throw (RuntimeException) e;
      }
      throw new RuntimeException("Error loading pom: " + pomFile.getAbsolutePath(), e);
    }

    Artifact rootArtifact =
        new DefaultArtifact(
            pom.getArtifact().getGroupId(),
            pom.getArtifact().getArtifactId(),
            pom.getArtifact().getClassifier(),
            pom.getArtifact().getType(),
            pom.getArtifact().getVersion(),
            null,
            new File(pom.getModel().getBuild().getOutputDirectory()));

    CollectRequest collectRequest = new CollectRequest();
    for (org.apache.maven.model.Dependency dependency : pom.getDependencies()) {
      collectRequest.addDependency(toAetherDependency(dependency));
    }
    for (RemoteRepository repository : pom.getRemoteProjectRepositories()) {
      collectRequest.addRepository(repository);
    }
    for (RemoteRepository repository : repositories) {
      collectRequest.addRepository(repository);
    }

    // Make sure we account for managed dependencies
    if (pom.getDependencyManagement() != null) {
      for (org.apache.maven.model.Dependency managedDependency :
          pom.getDependencyManagement().getDependencies()) {
        collectRequest.addManagedDependency(toAetherDependency(managedDependency));
      }
    }

    DependencyRequest dependencyRequest =
        new DependencyRequest(
            collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));
    List<Artifact> artifacts = resolveArtifacts(dependencyRequest);
    return ImmutableList.<Artifact>builder().add(rootArtifact).addAll(artifacts).build();
  }