You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2020/12/04 18:04:19 UTC

[maven-resolver-ant-tasks] 01/01: [MRESOLVER-66] Settings task does not load active profile repositories defined in settings.xml

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MRESOLVER-66
in repository https://gitbox.apache.org/repos/asf/maven-resolver-ant-tasks.git

commit 7d14dde609a0c459bac6941de98ec4f98b0c57c1
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat Oct 17 00:00:44 2020 +0200

    [MRESOLVER-66] Settings task does not load active profile repositories defined in settings.xml
    
    This closes #4
---
 .../maven/resolver/internal/ant/AntRepoSys.java    | 80 +++++++++++++++++++++-
 1 file changed, 78 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java b/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java
index 9242855..47dd306 100644
--- a/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java
+++ b/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java
@@ -58,6 +58,10 @@ import org.apache.maven.resolver.internal.ant.types.Pom;
 import org.apache.maven.resolver.internal.ant.types.Proxy;
 import org.apache.maven.resolver.internal.ant.types.RemoteRepositories;
 import org.apache.maven.resolver.internal.ant.types.RemoteRepository;
+import org.apache.maven.resolver.internal.ant.types.RemoteRepository.Policy;
+import org.apache.maven.settings.Profile;
+import org.apache.maven.settings.Repository;
+import org.apache.maven.settings.RepositoryPolicy;
 import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.building.DefaultSettingsBuilderFactory;
@@ -185,6 +189,7 @@ public class AntRepoSys
         repo = new RemoteRepository();
         repo.setProject( project );
         repo.setRefid( new Reference( project, Names.ID_CENTRAL ) );
+
         RemoteRepositories repos = new RemoteRepositories();
         repos.setProject( project );
         repos.addRemoterepo( repo );
@@ -458,6 +463,77 @@ public class AntRepoSys
         return new ConservativeAuthenticationSelector( selector );
     }
 
+    private RemoteRepositories getRemoteRepositories()
+    {
+        RemoteRepositories remoteRepositories = new RemoteRepositories();
+        remoteRepositories.setProject( project );
+
+        Settings settings = getSettings();
+        List<String> activeProfiles = settings.getActiveProfiles();
+        for ( String profileId : activeProfiles )
+        {
+            Profile profile = settings.getProfilesAsMap().get( profileId );
+            for ( Repository repository : profile.getRepositories() )
+            {
+                String id = repository.getId();
+                RemoteRepository repo = new RemoteRepository();
+                repo.setProject( project );
+                repo.setId( id );
+                repo.setUrl( repository.getUrl() );
+                if ( repository.getReleases() != null )
+                {
+                    RepositoryPolicy repositoryPolicy = repository.getReleases();
+                    Policy policy = new Policy();
+                    policy.setEnabled( repositoryPolicy.isEnabled() );
+                    if ( repositoryPolicy.getChecksumPolicy() != null )
+                    {
+                        policy.setChecksums( repositoryPolicy.getChecksumPolicy() );
+                    }
+                    if ( repositoryPolicy.getUpdatePolicy() != null )
+                    {
+                        policy.setUpdates( repositoryPolicy.getUpdatePolicy() );
+                    }
+                    repo.addReleases( policy );
+                }
+                if ( repository.getSnapshots() != null )
+                {
+                    RepositoryPolicy repositoryPolicy = repository.getSnapshots();
+                    Policy policy = new Policy();
+                    policy.setEnabled( repositoryPolicy.isEnabled() );
+                    if ( repositoryPolicy.getChecksumPolicy() != null )
+                    {
+                        policy.setChecksums( repositoryPolicy.getChecksumPolicy() );
+                    }
+                    if ( repositoryPolicy.getUpdatePolicy() != null )
+                    {
+                        policy.setUpdates( repositoryPolicy.getUpdatePolicy() );
+                    }
+                    repo.addSnapshots( policy );
+                }
+                project.addReference( id, repo );
+
+                repo = new RemoteRepository();
+                repo.setProject( project );
+                repo.setRefid( new Reference( project, id ) );
+                remoteRepositories.addRemoterepo( repo );
+            }
+        }
+
+        return remoteRepositories;
+    }
+
+    private RemoteRepositories getMergedRepositories() {
+        RemoteRepositories defaultRepositories = AetherUtils.getDefaultRepositories( project );
+        RemoteRepositories settingsRepositories = getRemoteRepositories();
+
+        RemoteRepositories mergedRepositories = new RemoteRepositories();
+        mergedRepositories.setProject( project );
+        mergedRepositories.addRemoterepos( defaultRepositories );
+        mergedRepositories.addRemoterepos( settingsRepositories );
+
+        return mergedRepositories;
+    }
+
     public synchronized void setUserSettings( File file )
     {
         if ( !eq( this.userSettings, file ) )
@@ -519,7 +595,7 @@ public class AntRepoSys
         RepositorySystemSession session = getSession( task, null );
 
         remoteRepositories =
-            remoteRepositories == null ? AetherUtils.getDefaultRepositories( project ) : remoteRepositories;
+            remoteRepositories == null ? getMergedRepositories() : remoteRepositories;
 
         List<org.eclipse.aether.repository.RemoteRepository> repositories =
             ConverterUtils.toRepositories( task.getProject(), session, remoteRepositories, getRemoteRepoMan() );
@@ -613,7 +689,7 @@ public class AntRepoSys
         RepositorySystemSession session = getSession( task, localRepository );
 
         remoteRepositories =
-            remoteRepositories == null ? AetherUtils.getDefaultRepositories( project ) : remoteRepositories;
+            remoteRepositories == null ? getMergedRepositories() : remoteRepositories;
 
         List<org.eclipse.aether.repository.RemoteRepository> repos =
             ConverterUtils.toRepositories( project, session, remoteRepositories, getRemoteRepoMan() );