public static void getDependencies()

in tooling/common/src/main/java/org/apache/karaf/minho/tooling/common/maven/Parser.java [600:686]


    public static void getDependencies(File pom, List<String> dependencies, boolean includeTransitive) throws Exception {
        DefaultModelBuilder modelBuilder = new DefaultModelBuilder();
        modelBuilder.setProfileSelector(new DefaultProfileSelector());
        DefaultModelProcessor modelProcessor = new DefaultModelProcessor();
        modelProcessor.setModelReader(new DefaultModelReader());
        modelBuilder.setModelProcessor(modelProcessor);
        modelBuilder.setModelValidator(new DefaultModelValidator(new DefaultModelVersionProcessor()));
        DefaultSuperPomProvider superPomProvider = new DefaultSuperPomProvider();
        superPomProvider.setModelProcessor(modelProcessor);
        modelBuilder.setSuperPomProvider(superPomProvider);
        modelBuilder.setModelNormalizer(new DefaultModelNormalizer());
        modelBuilder.setProfileInjector(new DefaultProfileInjector());
        ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator = new ProfileActivationFilePathInterpolator();
        profileActivationFilePathInterpolator.setPathTranslator(new DefaultPathTranslator());
        modelBuilder.setProfileActivationFilePathInterpolator(profileActivationFilePathInterpolator);
        modelBuilder.setInheritanceAssembler(new DefaultInheritanceAssembler());
        StringVisitorModelInterpolator visitorModelInterpolator = new StringVisitorModelInterpolator();
        visitorModelInterpolator.setVersionPropertiesProcessor(new DefaultModelVersionProcessor());
        visitorModelInterpolator.setPathTranslator(new DefaultPathTranslator());
        visitorModelInterpolator.setUrlNormalizer(new DefaultUrlNormalizer());
        visitorModelInterpolator.setVersionPropertiesProcessor(new DefaultModelVersionProcessor());
        modelBuilder.setModelInterpolator(visitorModelInterpolator);
        DefaultModelUrlNormalizer modelUrlNormalizer = new DefaultModelUrlNormalizer();
        modelUrlNormalizer.setUrlNormalizer(new DefaultUrlNormalizer());
        modelBuilder.setModelUrlNormalizer(modelUrlNormalizer);
        DefaultModelPathTranslator modelPathTranslator = new DefaultModelPathTranslator();
        modelPathTranslator.setPathTranslator(new DefaultPathTranslator());
        modelBuilder.setModelPathTranslator(modelPathTranslator);
        modelBuilder.setPluginManagementInjector(new DefaultPluginManagementInjector());
        modelBuilder.setDependencyManagementInjector(new DefaultDependencyManagementInjector());
        modelBuilder.setDependencyManagementImporter(new DefaultDependencyManagementImporter());

        DefaultRepositorySystemSession repositorySystemSession = getRepositorySystemSession();
        LocalRepositoryProvider localRepositoryProvider = getLocalRepositoryProvider(repositorySystemSession);

        DefaultArtifactResolver resolver = getArtifactResolver(repositorySystemSession,
                localRepositoryProvider,
                getRemoteRepositories());

        DefaultSyncContextFactory syncContextFactory = new DefaultSyncContextFactory();
        DefaultRepositoryEventDispatcher repositoryEventDispatcher = new DefaultRepositoryEventDispatcher();
        DefaultVersionResolver versionResolver = new DefaultVersionResolver();
        DefaultMetadataResolver metadataResolver = new DefaultMetadataResolver();
        metadataResolver.setSyncContextFactory(syncContextFactory);
        metadataResolver.setRepositoryEventDispatcher(repositoryEventDispatcher);
        versionResolver.setMetadataResolver(metadataResolver);
        versionResolver.setSyncContextFactory(syncContextFactory);
        versionResolver.setRepositoryEventDispatcher(repositoryEventDispatcher);

        DefaultRepositorySystem repositorySystem = new DefaultRepositorySystem();
        repositorySystem.setLocalRepositoryProvider(localRepositoryProvider);
        repositorySystem.setVersionResolver(versionResolver);

        DefaultVersionRangeResolver versionRangeResolver = new DefaultVersionRangeResolver();
        versionRangeResolver.setMetadataResolver(metadataResolver);
        versionRangeResolver.setRepositoryEventDispatcher(repositoryEventDispatcher);
        versionRangeResolver.setSyncContextFactory(syncContextFactory);

        repositorySystem.setVersionRangeResolver(versionRangeResolver);
        repositorySystem.setArtifactResolver(resolver);

        ModelResolver modelResolver = new ProjectModelResolver(
                repositorySystemSession,
                new RequestTrace(null),
                repositorySystem,
                new DefaultRemoteRepositoryManager(),
                new ArrayList<RemoteRepository>(),
                ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT,
                null);


        ModelBuildingRequest request = new DefaultModelBuildingRequest();
        request.setModelResolver(modelResolver);
        request.setPomFile(pom);
        Model model = modelBuilder.build(request).getEffectiveModel();

        for (Dependency dependency : model.getDependencies()) {
            if (!dependency.getScope().equals("test")) {
                dependencies.add("mvn:" + dependency.getGroupId() + "/" + dependency.getArtifactId() + "/" + dependency.getVersion() + "/" + dependency.getType());
                if (includeTransitive) {
                    // recursion
                    File transitivePom = Parser.resolve("mvn:" + dependency.getGroupId() + "/" + dependency.getArtifactId() + "/" + dependency.getVersion() + "/pom");
                    Parser.getDependencies(transitivePom, dependencies, includeTransitive);
                }
            }
        }
    }