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