Interpolate property values for repositories
Update RepositoryConfigurationFactory to apply a RegexBasedInterpolator to repository IDs and URLs. Fixes gh-4318 Closes gh-4319
This commit is contained in:
committed by
Phillip Webb
parent
5df807926e
commit
5e7376fb3c
@@ -23,6 +23,10 @@ import java.util.List;
|
||||
|
||||
import org.apache.maven.settings.Profile;
|
||||
import org.apache.maven.settings.Repository;
|
||||
import org.codehaus.plexus.interpolation.InterpolationException;
|
||||
import org.codehaus.plexus.interpolation.Interpolator;
|
||||
import org.codehaus.plexus.interpolation.PropertiesBasedValueSource;
|
||||
import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
|
||||
|
||||
import org.springframework.boot.cli.compiler.grape.RepositoryConfiguration;
|
||||
import org.springframework.boot.cli.compiler.maven.MavenSettings;
|
||||
@@ -78,17 +82,37 @@ public final class RepositoryConfigurationFactory {
|
||||
}
|
||||
|
||||
private static void addActiveProfileRepositories(List<Profile> activeProfiles,
|
||||
List<RepositoryConfiguration> repositoryConfiguration) {
|
||||
List<RepositoryConfiguration> configurations) {
|
||||
for (Profile activeProfile : activeProfiles) {
|
||||
Interpolator interpolator = new RegexBasedInterpolator();
|
||||
interpolator.addValueSource(
|
||||
new PropertiesBasedValueSource(activeProfile.getProperties()));
|
||||
for (Repository repository : activeProfile.getRepositories()) {
|
||||
repositoryConfiguration.add(new RepositoryConfiguration(
|
||||
repository.getId(), URI.create(repository.getUrl()),
|
||||
repository.getSnapshots() != null
|
||||
? repository.getSnapshots().isEnabled() : false));
|
||||
configurations.add(getRepositoryConfiguration(interpolator, repository));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static RepositoryConfiguration getRepositoryConfiguration(
|
||||
Interpolator interpolator, Repository repository) {
|
||||
String name = interpolate(interpolator, repository.getId());
|
||||
String url = interpolate(interpolator, repository.getUrl());
|
||||
boolean snapshotsEnabled = false;
|
||||
if (repository.getSnapshots() != null) {
|
||||
snapshotsEnabled = repository.getSnapshots().isEnabled();
|
||||
}
|
||||
return new RepositoryConfiguration(name, URI.create(url), snapshotsEnabled);
|
||||
}
|
||||
|
||||
private static String interpolate(Interpolator interpolator, String value) {
|
||||
try {
|
||||
return interpolator.interpolate(value);
|
||||
}
|
||||
catch (InterpolationException ex) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
private static File getLocalRepositoryDirectory(String localRepository) {
|
||||
if (StringUtils.hasText(localRepository)) {
|
||||
return new File(localRepository);
|
||||
|
||||
Reference in New Issue
Block a user