private static RepositorySystem getRepositorySystem() throws ComponentLookupException { if (StringUtils.isNotEmpty(getInstalledMavenHome())) { PlexusContainer mvnContainer = mvnContainer(); return mvnContainer.lookup(RepositorySystem.class); } else { return newRepositorySystem(); } }
private static List<RemoteRepository> getRemoteRepositories() { String mavenHome = getInstalledMavenHome(); if (StringUtils.isEmpty(mavenHome)) { return newRepositories(); } else { List<Mirror> mirrors = getLocalSettings(mavenHome).getMirrors(); if (mirrors.isEmpty()) { LOGGER.info("no mirror have been defined into maven's configuration. Is going to use {} from maven.central.repo", hadoopUnitConfiguration.getString("maven.central.repo")); return newRepositories(); } List<RemoteRepository> remoteRepositories = mirrors.stream().map(mirror -> new RemoteRepository.Builder(mirror.getId(), "default", mirror.getUrl()).build()).collect(Collectors.toList()); return remoteRepositories; } }
Map<String, ComponentDependencies> componentsToStartWithDependencies = loadMavenDependencies(componentsToStart); addModuleJarToCurrentClassloader(componentsToStartWithDependencies); List<String> componentsNameToStart = computeStartingOrder(componentsToStartWithDependencies); ComponentProperties componentProperties = loadAndRun(c, hadoopUnitConfiguration.getString(c.toLowerCase() + ".mainClass"), componentsToStartWithDependencies.get(c.toLowerCase()).getDependencies()); })); printBanner();
repositorySystem = getRepositorySystem(); } catch (ComponentLookupException e) { throw new BootstrapException("unable to get RepositoySystem from external maven", e); DefaultRepositorySystemSession session = newRepositorySystemSession(repositorySystem); DependencyFilter classpathFilter = DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(new Dependency(artifact, JavaScopes.RUNTIME)); collectRequest.setRepositories(getRemoteRepositories());
String mavenHome = getInstalledMavenHome(); Settings settings = getLocalSettings(mavenHome);
private static List<String> computeStartingOrder(Map<String, ComponentDependencies> componentsToStartWithDependencies) { Map<String, ComponentMetadata> commands = new HashMap<>(); componentsToStartWithDependencies.entrySet().stream().forEach(entry -> { try { ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader(); Class<?> componentClass = currentThreadClassLoader.loadClass(hadoopUnitConfiguration.getString(entry.getKey() + ".metadataClass")); ComponentMetadata componentInstance = (ComponentMetadata) componentClass.getConstructor().newInstance(); commands.put(componentInstance.getName(), componentInstance); } catch (Exception e) { LOGGER.error("unable to instantiate {}", entry.getValue().getName(), e); } }); Graph<String, DefaultEdge> dependenciesGraph = generateGraph(commands); Map<String, List<String>> dependenciesMapByComponent = commands.values().stream().collect(Collectors.toMap(ComponentMetadata::getName, c -> DependenciesCalculator.calculateParents(dependenciesGraph, c.getName()))); Map<String, List<String>> transitiveDependenciesMapByComponent = DependenciesCalculator.findTransitiveDependenciesByComponent(dependenciesMapByComponent); return DependenciesCalculator.dryRunToDefineCorrectOrder(transitiveDependenciesMapByComponent); }
private static Settings getLocalSettings(String mavenHome) { if (settings == null) { File globalSettingsFile = new File(mavenHome + "/conf/settings.xml"); if (!globalSettingsFile.exists()) { LOGGER.error("maven global settings.xml file not found : {}", globalSettingsFile); } File userSettingsFile = new File(System.getProperty("user.home") + "/.m2/settings.xml"); if (!userSettingsFile.exists()) { LOGGER.info("maven user settings.xml override file not found : {}", userSettingsFile); } PlexusContainer container = mvnContainer(); SettingsBuilder defaultSettingsBuilder = null; try { defaultSettingsBuilder = container.lookup(SettingsBuilder.class); } catch (ComponentLookupException e) { LOGGER.error("unable to lookup SettingsBuilder", e); } SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); settingsRequest.setGlobalSettingsFile(globalSettingsFile); settingsRequest.setUserSettingsFile(userSettingsFile); try { settings = defaultSettingsBuilder.build(settingsRequest).getEffectiveSettings(); } catch (SettingsBuildingException e) { LOGGER.error("unable to get settings", e); } } return settings; }