List of usage examples for org.apache.maven.model.profile ProfileActivationContext ProfileActivationContext
ProfileActivationContext
From source file:org.jboss.shrinkwrap.resolver.impl.maven.MavenWorkingSessionImpl.java
License:Apache License
private List<RemoteRepository> getRemoteRepositories() throws IllegalStateException { // disable repositories if working offline if (isOffline()) { log.log(Level.FINE, "No remote repositories will be available, working in offline mode"); return Collections.emptyList(); }//from w w w . ja va 2 s .c o m // the first repository defined is the first where we search Set<RemoteRepository> enhancedRepos = new LinkedHashSet<RemoteRepository>(); // add repositories we defined by hand enhancedRepos.addAll(additionalRemoteRepositories); ProfileSelector selector = new SettingsXmlProfileSelector(); LogModelProblemCollector problems = new LogModelProblemCollector(); List<Profile> activeProfiles = selector.getActiveProfiles(MavenConverter.asProfiles(settings.getProfiles()), new ProfileActivationContext() { @Override public Map<String, String> getUserProperties() { return Collections.emptyMap(); } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Map<String, String> getSystemProperties() { return new HashMap<String, String>((Map) SecurityActions.getProperties()); } @Override public File getProjectDirectory() { return new File(SecurityActions.getProperty("user.dir")); } @Override public Map<String, String> getProjectProperties() { // TODO can we put here other values? return Collections.emptyMap(); } @Override public List<String> getInactiveProfileIds() { return Collections.emptyList(); } @Override public List<String> getActiveProfileIds() { return settings.getActiveProfiles(); } }, problems); if (problems.hasSevereFailures()) { throw new IllegalStateException("Unable to get active profiles from Maven settings."); } for (Profile p : activeProfiles) { for (Repository repository : p.getRepositories()) { RemoteRepository repo = MavenConverter.asRemoteRepository(repository); // add remote repository from model only if not overridden by code if (!isIdIncluded(additionalRemoteRepositories, repo)) { enhancedRepos.add(repo); } } } // add remote repositories for (RemoteRepository repo : remoteRepositories) { // add remote repository from model only if not overridden by code if (!isIdIncluded(additionalRemoteRepositories, repo)) { enhancedRepos.add(repo); } } // add maven central if selected but if not overridden by API if (useMavenCentralRepository) { if (!isIdIncluded(additionalRemoteRepositories, MAVEN_CENTRAL)) { enhancedRepos.add(MAVEN_CENTRAL); } } else { List<RemoteRepository> reposToRemove = new ArrayList<RemoteRepository>(); // Attempt a remove for (final RemoteRepository repo : enhancedRepos) { // Because there are a lot of aliases for Maven Central, we have to approximate that anything named // "central" with URL containing "maven" is what we're looking to ban. For instance Central could be // http://repo.maven.apache.org/maven2 or http://repo1.maven.org/maven2 final String repoUrl = repo.getUrl(); if ((repoUrl.contains("maven.org") || repoUrl.contains("apache.org")) && repo.getId().equalsIgnoreCase(MAVEN_CENTRAL_NAME)) { // remote this "might-be" central repository, but only if not specified by hand if (!isIdIncluded(additionalRemoteRepositories, MAVEN_CENTRAL)) { reposToRemove.add(repo); } } } // We have to search on URL criteria, because .equals on RemoteRepository is too strict for us to call a // simple remove operation on the enhancedRepos Collection enhancedRepos.removeAll(reposToRemove); } // use mirrors if any to do the mirroring stuff DefaultMirrorSelector dms = new DefaultMirrorSelector(); // fill in mirrors for (Mirror mirror : settings.getMirrors()) { // Repository manager flag is set to false // Maven does not support specifying it in the settings.xml dms.add(mirror.getId(), mirror.getUrl(), mirror.getLayout(), false, mirror.getMirrorOf(), mirror.getMirrorOfLayouts()); } Set<RemoteRepository> mirroredRepos = new LinkedHashSet<RemoteRepository>(); for (RemoteRepository repository : enhancedRepos) { RemoteRepository mirror = dms.getMirror(repository); if (mirror != null) { mirroredRepos.add(mirror); } else { mirroredRepos.add(repository); } } final Set<RemoteRepository> authorizedRepos = new LinkedHashSet<RemoteRepository>(); for (RemoteRepository remoteRepository : mirroredRepos) { final RemoteRepository.Builder builder = new RemoteRepository.Builder(remoteRepository); // add authentication if <server> was provided in settings.xml file Server server = settings.getServer(remoteRepository.getId()); if (server != null) { final AuthenticationBuilder authenticationBuilder = new AuthenticationBuilder() .addUsername(server.getUsername()).addPassword(server.getPassword()) .addPrivateKey(server.getPrivateKey(), server.getPassphrase()); builder.setAuthentication(authenticationBuilder.build()); } authorizedRepos.add(builder.build()); } if (log.isLoggable(Level.FINER)) { for (RemoteRepository repository : authorizedRepos) { log.finer( "Repository " + repository.getUrl() + " have been made available for artifact resolution"); } } return new ArrayList<RemoteRepository>(authorizedRepos); }