-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,8 +9,10 @@ | |
import java.util.ArrayList; | ||
import java.util.HashSet; | ||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.Set; | ||
|
||
import org.apache.maven.settings.Mirror; | ||
import org.apache.maven.settings.Proxy; | ||
import org.apache.maven.settings.Settings; | ||
import org.eclipse.aether.repository.Authentication; | ||
|
@@ -31,21 +33,23 @@ public static List<RemoteRepository> getRemoteRepositories(MavenContainer contai | |
Set<RemoteRepository> remoteRepos = new HashSet<>(); | ||
remoteRepos.addAll(container.getEnabledRepositoriesFromProfile(settings)); | ||
// If no remote repositories found or no mirrors to central found, add central | ||
if (remoteRepos.isEmpty() || !hasCentralMirror(settings)) | ||
if (remoteRepos.isEmpty()) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
gastaldi
Author
Member
|
||
{ | ||
String centralRepoURL = getCentralMirrorURL(settings).orElse(MAVEN_CENTRAL_REPO); | ||
// Add central | ||
remoteRepos.add(convertToMavenRepo("central", MAVEN_CENTRAL_REPO, settings)); | ||
remoteRepos.add(convertToMavenRepo("central", centralRepoURL, settings)); | ||
} | ||
return new ArrayList<>(remoteRepos); | ||
} | ||
|
||
static boolean hasCentralMirror(Settings settings) | ||
static Optional<String> getCentralMirrorURL(Settings settings) | ||
{ | ||
return settings.getMirrors().stream() | ||
.anyMatch(m -> | ||
"central".equals(m.getMirrorOf()) || | ||
"*".equals(m.getMirrorOf()) || | ||
MAVEN_CENTRAL_REPO.equals(m.getMirrorOf())); | ||
.filter(m -> "central".equals(m.getMirrorOf()) || | ||
"*".equals(m.getMirrorOf()) || | ||
MAVEN_CENTRAL_REPO.equals(m.getMirrorOf())) | ||
.map(Mirror::getUrl) | ||
.findFirst(); | ||
} | ||
|
||
static RemoteRepository convertToMavenRepo(final String id, String url, final Settings settings) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
/* | ||
* Copyright 2017 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Eclipse Public License version 1.0, available at | ||
* http://www.eclipse.org/legal/epl-v10.html | ||
*/ | ||
|
||
package org.jboss.forge.furnace.manager.maven.util; | ||
|
||
import static org.hamcrest.CoreMatchers.equalTo; | ||
|
||
import java.io.File; | ||
import java.util.List; | ||
|
||
import org.apache.maven.settings.Settings; | ||
import org.apache.maven.settings.building.DefaultSettingsBuilderFactory; | ||
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest; | ||
import org.apache.maven.settings.building.SettingsBuilder; | ||
import org.apache.maven.settings.building.SettingsBuildingRequest; | ||
import org.eclipse.aether.repository.RemoteRepository; | ||
import org.jboss.forge.furnace.manager.maven.MavenContainer; | ||
import org.junit.Assert; | ||
import org.junit.Test; | ||
|
||
/** | ||
* | ||
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a> | ||
*/ | ||
public class MavenRepositoriesTest | ||
{ | ||
|
||
@Test | ||
public void testMirrorCentralWithoutProfiles() throws Exception | ||
{ | ||
SettingsBuilder settingsBuilder = new DefaultSettingsBuilderFactory().newInstance(); | ||
SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); | ||
settingsRequest.setUserSettingsFile(new File("src/test/resources/profiles/mirror-settings.xml")); | ||
Settings settings = settingsBuilder.build(settingsRequest).getEffectiveSettings(); | ||
MavenContainer container = new MavenContainer(); | ||
List<RemoteRepository> remoteRepositories = MavenRepositories.getRemoteRepositories(container, settings); | ||
Assert.assertThat(remoteRepositories.size(), equalTo(1)); | ||
Assert.assertThat(remoteRepositories.get(0).getId(), equalTo("central")); | ||
Assert.assertThat(remoteRepositories.get(0).getUrl(), | ||
equalTo("http://repo.cloudbees.com/content/repositories/central/")); | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> | ||
<servers> | ||
<server> | ||
<id>jboss-releases-repository</id> | ||
<username>gastaldi</username> | ||
<password>{GCnCtu0Cd2MHAxuw8pxNtvHGDoxfHUkDYiy9rzZperI=}</password> | ||
<configuration> | ||
<httpHeaders> | ||
<property> | ||
<name>User-Agent</name> | ||
<value>Maven m2Release (java:${java.vm.version} ${env.BUILD_TAG})</value> | ||
</property> | ||
</httpHeaders> | ||
</configuration> | ||
</server> | ||
<server> | ||
<id>jboss-staging-repository</id> | ||
<username>gastaldi</username> | ||
<password>{GCnCtu0Cd2MHAxuw8pxNtvHGDoxfHUkDYiy9rzZperI=}</password> | ||
<configuration> | ||
<httpHeaders> | ||
<property> | ||
<name>User-Agent</name> | ||
<value>Maven m2Release (java:${java.vm.version} ${env.BUILD_TAG})</value> | ||
</property> | ||
</httpHeaders> | ||
</configuration> | ||
</server> | ||
<server> | ||
<id>ossrh</id> | ||
<username>gastaldi</username> | ||
<password>{GCnCtu0Cd2MHAxuw8pxNtvHGDoxfHUkDYiy9rzZperI=}</password> | ||
<configuration> | ||
<httpHeaders> | ||
<property> | ||
<name>User-Agent</name> | ||
<value>Maven m2Release (java:${java.vm.version} ${env.BUILD_TAG})</value> | ||
</property> | ||
</httpHeaders> | ||
</configuration> | ||
</server> | ||
<server> | ||
<id>jboss-snapshots-repository</id> | ||
<username>gastaldi</username> | ||
<password>{GCnCtu0Cd2MHAxuw8pxNtvHGDoxfHUkDYiy9rzZperI=}</password> | ||
</server> | ||
</servers> | ||
<mirrors> | ||
<mirror> | ||
<id>cloudbees-central-mirror</id> | ||
<mirrorOf>central</mirrorOf> | ||
<name>Central Repository Mirror</name> | ||
<url>http://repo.cloudbees.com/content/repositories/central/</url> | ||
</mirror> | ||
<mirror> | ||
<id>cloudbees-jboss-mirror</id> | ||
<mirrorOf>jboss-public-repository-group</mirrorOf> | ||
<name>JBoss Public Repository Group Mirror</name> | ||
<url>http://repo.cloudbees.com/content/groups/jboss-public-repository-group/</url> | ||
</mirror> | ||
</mirrors> | ||
<profiles> | ||
<profile> | ||
<id>gpg</id> | ||
<properties> | ||
<!-- https://www.cloudbees.com/blog/how-do-maven-release-builds-devcloud-central --> | ||
<gpg.useagent>true</gpg.useagent> | ||
<gpg.keyname>355D4497</gpg.keyname> | ||
<gpg.passphrase>n0th1ng</gpg.passphrase> | ||
<gpg.homedir>/private/forge/.gnupg</gpg.homedir> | ||
<gpg.publickeyring>/private/forge/.gnupg/pubring.gpg</gpg.publickeyring> | ||
<gpg.secretkeyring>/private/forge/.gnupg/secring.gpg</gpg.secretkeyring> | ||
<gpg.lockMode>never</gpg.lockMode> | ||
<gpg.defaultkeyring>false</gpg.defaultkeyring> | ||
</properties> | ||
</profile> | ||
<profile> | ||
<id>cloudbees-public-repository</id> | ||
<repositories> | ||
<repository> | ||
<id>cloudbees-public-repository</id> | ||
<name>CloudBees Repository</name> | ||
<url>http://repo.cloudbees.com/content/groups/public/</url> | ||
<releases> | ||
<enabled>true</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>false</enabled> | ||
</snapshots> | ||
</repository> | ||
<repository> | ||
<id>cloudbees-snapshots-repository</id> | ||
<url>http://repo.cloudbees.com/content/groups/public/</url> | ||
<layout>default</layout> | ||
<releases> | ||
<enabled>false</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>true</enabled> | ||
</snapshots> | ||
</repository> | ||
</repositories> | ||
<pluginRepositories> | ||
<pluginRepository> | ||
<id>cloudbees-public-repository</id> | ||
<name>CloudBees Repository</name> | ||
<url>http://repo.cloudbees.com/content/groups/public/</url> | ||
<layout>default</layout> | ||
<releases> | ||
<enabled>true</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>true</enabled> | ||
</snapshots> | ||
</pluginRepository> | ||
</pluginRepositories> | ||
</profile> | ||
<profile> | ||
<id>jboss-public-repository</id> | ||
<repositories> | ||
<repository> | ||
<id>jboss-public-repository</id> | ||
<name>JBoss Repository</name> | ||
<url>https://repository.jboss.org/nexus/content/groups/public/</url> | ||
<releases> | ||
<enabled>true</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>false</enabled> | ||
</snapshots> | ||
</repository> | ||
<repository> | ||
<id>jboss-snapshots-repository</id> | ||
<url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url> | ||
<layout>default</layout> | ||
<releases> | ||
<enabled>false</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>true</enabled> | ||
</snapshots> | ||
</repository> | ||
</repositories> | ||
<pluginRepositories> | ||
<pluginRepository> | ||
<id>jboss-public-repository</id> | ||
<name>JBoss Public Maven Repository Group</name> | ||
<url>https://repository.jboss.org/nexus/content/groups/public/</url> | ||
<layout>default</layout> | ||
<releases> | ||
<enabled>true</enabled> | ||
</releases> | ||
<snapshots> | ||
<enabled>true</enabled> | ||
</snapshots> | ||
</pluginRepository> | ||
</pluginRepositories> | ||
</profile> | ||
</profiles> | ||
<activeProfiles> | ||
<activeProfile>gpg</activeProfile> | ||
<!-- | ||
<activeProfile>cloudbees-public-repository</activeProfile> | ||
--> | ||
</activeProfiles> | ||
</settings> |
This is suspicious condition, if you have remote repository in active profile(s), the Central URL won't be set. Why ?
see https://issues.jboss.org/browse/FURNACE-141