Refactor code to improve separation of Maven APIs and Aether code. All transfer internal Maven3x implementations should not use (close to) any Maven Core code, only a few classes are allowed.
diff --git a/pom.xml b/pom.xml
index 8511433..0b26abd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,10 @@
<url>scm:svn:https://svn.apache.org/repos/asf/maven/website/components/${maven.site.path}</url>
</site>
</distributionManagement>
+
+ <properties>
+ <javaVersion>7</javaVersion>
+ </properties>
<build>
<plugins>
@@ -83,7 +87,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
- <version>1.15</version>
+ <version>1.18</version>
<executions>
<execution>
<id>sniff</id>
@@ -94,10 +98,13 @@
</execution>
</executions>
<configuration>
+ <ignores>
+ <ignore>java.lang.invoke.MethodHandle</ignore>
+ </ignores>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
- <artifactId>java16</artifactId>
- <version>1.1</version>
+ <artifactId>java17</artifactId>
+ <version>1.0</version>
</signature>
</configuration>
</plugin>
@@ -110,7 +117,7 @@
<configuration>
<rules>
<enforceBytecodeVersion>
- <maxJdkVersion>1.6</maxJdkVersion>
+ <maxJdkVersion>1.${javaVersion}</maxJdkVersion>
</enforceBytecodeVersion>
</rules>
</configuration>
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
index 345e85d..c6f2858 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
@@ -52,11 +52,7 @@
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactDeployer effectiveArtifactDeployer = container.lookup( ArtifactDeployer.class, hint );
-
- effectiveArtifactDeployer.deploy( request, mavenArtifacts );
+ getMavenArtifactDeployer( request ).deploy( mavenArtifacts );
}
catch ( ComponentLookupException e )
{
@@ -72,11 +68,7 @@
validateParameters( request, mavenArtifacts );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactDeployer effectiveArtifactDeployer = container.lookup( ArtifactDeployer.class, hint );
-
- effectiveArtifactDeployer.deploy( request, remoteRepository, mavenArtifacts );
+ getMavenArtifactDeployer( request ).deploy( remoteRepository, mavenArtifacts );
}
catch ( ComponentLookupException e )
{
@@ -133,4 +125,29 @@
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
+
+ private MavenArtifactDeployer getMavenArtifactDeployer( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, ArtifactDeployerException
+ {
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem repositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
+
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven31ArtifactDeployer( repositorySystem, session );
+ }
+ else
+ {
+ org.sonatype.aether.RepositorySystem repositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven30ArtifactDeployer( repositorySystem, session );
+ }
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
index 83cc6a2..0f5908d 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
@@ -25,13 +25,9 @@
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer;
import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
@@ -43,33 +39,35 @@
/**
*
*/
-@Component( role = ArtifactDeployer.class, hint = "maven3" )
class Maven30ArtifactDeployer
- implements ArtifactDeployer
+ implements MavenArtifactDeployer
{
- @Requirement
- private RepositorySystem repositorySystem;
-
- @Override
- public void deploy( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
- throws ArtifactDeployerException
+ private final RepositorySystem repositorySystem;
+
+ private final RepositorySystemSession session;
+
+ Maven30ArtifactDeployer( RepositorySystem repositorySystem, RepositorySystemSession session )
{
- deploy( buildingRequest, null, mavenArtifacts );
+ this.repositorySystem = repositorySystem;
+ this.session = session;
}
@Override
- public void deploy( ProjectBuildingRequest buildingRequest, ArtifactRepository remoteRepository,
+ public void deploy( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
+ throws ArtifactDeployerException
+ {
+ deploy( null, mavenArtifacts );
+ }
+
+ @Override
+ public void deploy( ArtifactRepository remoteRepository,
Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
throws ArtifactDeployerException
{
// prepare request
DeployRequest request = new DeployRequest();
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
RemoteRepository defaultRepository = null;
if ( remoteRepository != null )
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
index 71594de..1a2b640 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
@@ -25,13 +25,9 @@
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer;
import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
import org.apache.maven.shared.transfer.metadata.internal.Maven31MetadataBridge;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -43,33 +39,36 @@
/**
*
*/
-@Component( role = ArtifactDeployer.class, hint = "maven31" )
class Maven31ArtifactDeployer
- implements ArtifactDeployer
+ implements MavenArtifactDeployer
{
- @Requirement
- private RepositorySystem repositorySystem;
-
- @Override
- public void deploy( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
- throws ArtifactDeployerException
+ private final RepositorySystem repositorySystem;
+
+ private final RepositorySystemSession session;
+
+ Maven31ArtifactDeployer( RepositorySystem repositorySystem, RepositorySystemSession session )
{
- deploy( buildingRequest, null, mavenArtifacts );
+ super();
+ this.repositorySystem = repositorySystem;
+ this.session = session;
}
- /** {@inheritDoc} */
- public void deploy( ProjectBuildingRequest buildingRequest, ArtifactRepository remoteRepository,
+ @Override
+ public void deploy( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
+ throws ArtifactDeployerException
+ {
+ deploy( null, mavenArtifacts );
+ }
+
+ @Override
+ public void deploy( ArtifactRepository remoteRepository,
Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
throws ArtifactDeployerException
{
// prepare request
DeployRequest request = new DeployRequest();
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
RemoteRepository defaultRepository = null;
if ( remoteRepository != null )
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java
new file mode 100644
index 0000000..c4f0446
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java
@@ -0,0 +1,42 @@
+package org.apache.maven.shared.transfer.artifact.deploy.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collection;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
+
+/**
+ *
+ * @author Robert Scholte
+ *
+ */
+public interface MavenArtifactDeployer
+{
+
+ void deploy( Collection<Artifact> mavenArtifacts )
+ throws ArtifactDeployerException;
+
+ void deploy( ArtifactRepository remoteRepository, Collection<Artifact> mavenArtifacts )
+ throws ArtifactDeployerException;
+
+}
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
index 574d208..f8a56f7 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
@@ -26,6 +26,7 @@
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
+import org.apache.maven.shared.transfer.repository.RepositoryManager;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
@@ -41,8 +42,9 @@
class DefaultArtifactInstaller
implements ArtifactInstaller, Contextualizable
{
-
private PlexusContainer container;
+
+ private RepositoryManager repositoryManager;
@Override
public void install( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts )
@@ -51,11 +53,7 @@
validateParameters( request, mavenArtifacts );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactInstaller effectiveArtifactInstaller = container.lookup( ArtifactInstaller.class, hint );
-
- effectiveArtifactInstaller.install( request, mavenArtifacts );
+ getMavenArtifactInstaller( request ).install( mavenArtifacts );
}
catch ( ComponentLookupException e )
{
@@ -78,14 +76,13 @@
}
// TODO: Should we check for exists() ?
+
+ // update local repo in request
+ ProjectBuildingRequest newRequest = repositoryManager.setLocalRepositoryBasedir( request, localRepositry );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactInstaller effectiveArtifactInstaller = container.lookup( ArtifactInstaller.class, hint );
-
- effectiveArtifactInstaller.install( request, localRepositry, mavenArtifacts );
+ getMavenArtifactInstaller( newRequest ).install( mavenArtifacts );
}
catch ( ComponentLookupException e )
{
@@ -142,4 +139,29 @@
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
+
+ private MavenArtifactInstaller getMavenArtifactInstaller( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, ArtifactInstallerException
+ {
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem repositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
+
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven31ArtifactInstaller( repositorySystem, session );
+ }
+ else
+ {
+ org.sonatype.aether.RepositorySystem repositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven30ArtifactInstaller( repositorySystem, session );
+ }
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
index 260beec..2a15dfd 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
@@ -19,20 +19,14 @@
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
@@ -43,30 +37,24 @@
/**
*
*/
-@Component( role = ArtifactInstaller.class, hint = "maven3" )
class Maven30ArtifactInstaller
- implements ArtifactInstaller
+ implements MavenArtifactInstaller
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private RepositoryManager repositoryManager;
+ private final RepositorySystemSession session;
+
+ Maven30ArtifactInstaller( RepositorySystem repositorySystem, RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.session = session;
+ }
@Override
- public void install( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
- throws ArtifactInstallerException
+ public void install( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
+ throws ArtifactInstallerException
{
- install( buildingRequest, null, mavenArtifacts );
- }
-
- @Override
- public void install( ProjectBuildingRequest buildingRequest, File localRepository,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
- throws ArtifactInstallerException
- {
- // prepare installRequest
+ // prepare installRequest
InstallRequest request = new InstallRequest();
// transform artifacts
@@ -100,14 +88,10 @@
}
}
- if ( localRepository != null )
- {
- buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepository );
- }
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
+// if ( localRepository != null )
+// {
+// buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepository );
+// }
// install
try
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
index d922b97..e4eae74 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
@@ -19,20 +19,14 @@
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
import org.apache.maven.shared.transfer.metadata.internal.Maven31MetadataBridge;
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -43,27 +37,22 @@
/**
*
*/
-@Component( role = ArtifactInstaller.class, hint = "maven31" )
class Maven31ArtifactInstaller
- implements ArtifactInstaller
+ implements MavenArtifactInstaller
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private RepositoryManager repositoryManager;
-
- @Override
- public void install( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
- throws ArtifactInstallerException
- {
- install( buildingRequest, null, mavenArtifacts );
- }
+ private final RepositorySystemSession session;
+ Maven31ArtifactInstaller( RepositorySystem repositorySystem,
+ RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.session = session;
+ }
+
@Override
- public void install( ProjectBuildingRequest buildingRequest, File localRepository,
- Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
+ public void install( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
throws ArtifactInstallerException
{
// prepare installRequest
@@ -100,14 +89,6 @@
}
}
- if ( localRepository != null )
- {
- buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepository );
- }
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
// install
try
{
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java
new file mode 100644
index 0000000..7670d57
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java
@@ -0,0 +1,36 @@
+package org.apache.maven.shared.transfer.artifact.install.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collection;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
+
+/**
+ *
+ * @author Robert Scholte
+ *
+ */
+public interface MavenArtifactInstaller
+{
+ void install( Collection<Artifact> mavenArtifacts )
+ throws ArtifactInstallerException;
+}
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
index ae709a5..9f1826b 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.List;
+
+import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
@@ -33,6 +36,7 @@
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+
/**
*
*/
@@ -49,11 +53,7 @@
validateParameters( buildingRequest, mavenArtifact );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactResolver effectiveArtifactResolver = container.lookup( ArtifactResolver.class, hint );
-
- return effectiveArtifactResolver.resolveArtifact( buildingRequest, mavenArtifact );
+ return getMavenArtifactResolver( buildingRequest ).resolveArtifact( mavenArtifact );
}
catch ( ComponentLookupException e )
{
@@ -68,11 +68,7 @@
validateParameters( buildingRequest, coordinate );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- ArtifactResolver effectiveArtifactResolver = container.lookup( ArtifactResolver.class, hint );
-
- return effectiveArtifactResolver.resolveArtifact( buildingRequest, coordinate );
+ return getMavenArtifactResolver( buildingRequest ).resolveArtifact( coordinate );
}
catch ( ComponentLookupException e )
{
@@ -137,4 +133,44 @@
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
+
+ private MavenArtifactResolver getMavenArtifactResolver( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, ArtifactResolverException
+ {
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem repositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
+
+ @SuppressWarnings( "unchecked" )
+ List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
+ List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven31ArtifactResolver( repositorySystem, aetherRepositories, session );
+
+ }
+ else
+ {
+ org.sonatype.aether.RepositorySystem repositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ @SuppressWarnings( "unchecked" )
+ List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.sonatype.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
+ "toRepos", List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven30ArtifactResolver( repositorySystem, aetherRepositories, session );
+ }
+
+
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
index f81b243..e5f820c 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
@@ -22,13 +22,8 @@
import java.util.List;
import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
@@ -43,33 +38,38 @@
/**
*
*/
-@Component( role = ArtifactResolver.class, hint = "maven3" )
class Maven30ArtifactResolver
- implements ArtifactResolver
+ implements MavenArtifactResolver
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final List<RemoteRepository> aetherRepositories;
+
+ private final RepositorySystemSession session;
+
+ Maven30ArtifactResolver( RepositorySystem repositorySystem, List<RemoteRepository> aetherRepositories,
+ RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.aetherRepositories = aetherRepositories;
+ this.session = session;
+ }
@Override
// CHECKSTYLE_OFF: LineLength
- public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- org.apache.maven.artifact.Artifact mavenArtifact )
+ public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
Artifact aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
org.apache.maven.artifact.Artifact.class, mavenArtifact );
- return resolveArtifact( buildingRequest, aetherArtifact );
+ return resolveArtifact( aetherArtifact );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- ArtifactCoordinate coordinate )
+ public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ArtifactCoordinate coordinate )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
@@ -77,23 +77,14 @@
new DefaultArtifact( coordinate.getGroupId(), coordinate.getArtifactId(), coordinate.getClassifier(),
coordinate.getExtension(), coordinate.getVersion() );
- return resolveArtifact( buildingRequest, aetherArtifact );
+ return resolveArtifact( aetherArtifact );
}
// CHECKSTYLE_OFF: LineLength
- private org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- Artifact aetherArtifact )
+ private org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( Artifact aetherArtifact )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
try
{
// use descriptor to respect relocation
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java
index 56e4519..888a683 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java
@@ -22,13 +22,8 @@
import java.util.List;
import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -43,33 +38,38 @@
/**
*
*/
-@Component( role = ArtifactResolver.class, hint = "maven31" )
class Maven31ArtifactResolver
- implements ArtifactResolver
+ implements MavenArtifactResolver
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
+
+ private final List<RemoteRepository> aetherRepositories;
+
+ private final RepositorySystemSession session;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ Maven31ArtifactResolver( RepositorySystem repositorySystem, List<RemoteRepository> aetherRepositories,
+ RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.aetherRepositories = aetherRepositories;
+ this.session = session;
+ }
@Override
// CHECKSTYLE_OFF: LineLength
- public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- org.apache.maven.artifact.Artifact mavenArtifact )
+ public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
Artifact aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
org.apache.maven.artifact.Artifact.class, mavenArtifact );
- return resolveArtifact( buildingRequest, aetherArtifact );
+ return resolveArtifact( aetherArtifact );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- ArtifactCoordinate coordinate )
+ public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ArtifactCoordinate coordinate )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
@@ -77,23 +77,14 @@
new DefaultArtifact( coordinate.getGroupId(), coordinate.getArtifactId(), coordinate.getClassifier(),
coordinate.getExtension(), coordinate.getVersion() );
- return resolveArtifact( buildingRequest, aetherArtifact );
+ return resolveArtifact( aetherArtifact );
}
// CHECKSTYLE_OFF: LineLength
- private org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest,
- Artifact aetherArtifact )
+ private org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( Artifact aetherArtifact )
throws ArtifactResolverException
// CHECKSTYLE_ON: LineLength
{
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
try
{
// use descriptor to respect relocation
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java
new file mode 100644
index 0000000..2e9fb74
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java
@@ -0,0 +1,38 @@
+package org.apache.maven.shared.transfer.artifact.resolve.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
+import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
+import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
+
+/**
+ *
+ * @author Robert Scholte
+ *
+ */
+public interface MavenArtifactResolver
+{
+ ArtifactResult resolveArtifact( Artifact mavenArtifact ) throws ArtifactResolverException;
+
+ ArtifactResult resolveArtifact( ArtifactCoordinate coordinate ) throws ArtifactResolverException;
+
+}
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
index 863c326..9904731 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
@@ -19,6 +19,10 @@
* under the License.
*/
+import java.util.List;
+
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
@@ -72,11 +76,7 @@
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- DependencyCollector effectiveDependencyCollector = container.lookup( DependencyCollector.class, hint );
-
- return effectiveDependencyCollector.collectDependencies( buildingRequest, root );
+ return getMavenDependencyCollector( buildingRequest ).collectDependencies( root );
}
catch ( ComponentLookupException e )
{
@@ -172,5 +172,49 @@
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
+
+ private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, DependencyCollectorException
+ {
+ ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class );
+
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem m31RepositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
+
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ @SuppressWarnings( "unchecked" )
+ List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
+ List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session,
+ aetherRepositories );
+
+ }
+ else
+ {
+
+ org.sonatype.aether.RepositorySystem m30RepositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ @SuppressWarnings( "unchecked" )
+ List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.sonatype.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
+ "toRepos", List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ return new Maven30DependencyCollector( m30RepositorySystem, artifactHandlerManager, session,
+ aetherRepositories );
+ }
+
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
index a1abb8c..4b4eaf2 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
@@ -26,13 +26,11 @@
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.Model;
-import org.apache.maven.project.ProjectBuildingRequest;
+
import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
import org.apache.maven.shared.transfer.dependencies.collect.CollectorResult;
import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollector;
import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
@@ -49,19 +47,29 @@
* @author Robert Scholte
*
*/
-@Component( role = DependencyCollector.class, hint = "maven3" )
class Maven30DependencyCollector
- implements DependencyCollector
+ implements MavenDependencyCollector
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final ArtifactHandlerManager artifactHandlerManager;
+
+ private final RepositorySystemSession session;
+
+ private final List<RemoteRepository> aetherRepositories;
+
+ Maven30DependencyCollector( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager,
+ RepositorySystemSession session, List<RemoteRepository> aetherRepositories )
+ {
+ super();
+ this.repositorySystem = repositorySystem;
+ this.artifactHandlerManager = artifactHandlerManager;
+ this.session = session;
+ this.aetherRepositories = aetherRepositories;
+ }
@Override
- public CollectorResult collectDependencies( final ProjectBuildingRequest buildingRequest,
- org.apache.maven.model.Dependency root )
+ public CollectorResult collectDependencies( org.apache.maven.model.Dependency root )
throws DependencyCollectorException
{
ArtifactTypeRegistry typeRegistry =
@@ -71,11 +79,11 @@
CollectRequest request = new CollectRequest();
request.setRoot( toDependency( root, typeRegistry ) );
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
+ public CollectorResult collectDependencies( DependableCoordinate root )
throws DependencyCollectorException
{
ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getType() );
@@ -88,11 +96,11 @@
CollectRequest request = new CollectRequest();
request.setRoot( new Dependency( aetherArtifact, null ) );
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
+ public CollectorResult collectDependencies( Model root )
throws DependencyCollectorException
{
// Are there examples where packaging and type are NOT in sync
@@ -130,19 +138,12 @@
request.setManagedDependencies( aetherManagerDependencies );
}
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
- private CollectorResult collectDependencies( final ProjectBuildingRequest buildingRequest, CollectRequest request )
+ private CollectorResult collectDependencies( CollectRequest request )
throws DependencyCollectorException
{
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
request.setRepositories( aetherRepositories );
try
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
index cc4430d..0ee0385 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
@@ -26,13 +26,10 @@
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.Model;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
import org.apache.maven.shared.transfer.dependencies.collect.CollectorResult;
import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollector;
import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -49,19 +46,29 @@
* @author Robert Scholte
*
*/
-@Component( role = DependencyCollector.class, hint = "maven31" )
class Maven31DependencyCollector
- implements DependencyCollector
+ implements MavenDependencyCollector
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final ArtifactHandlerManager artifactHandlerManager;
+
+ private final RepositorySystemSession session;
+
+ private final List<RemoteRepository> aetherRepositories;
+
+ Maven31DependencyCollector( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager,
+ RepositorySystemSession session, List<RemoteRepository> aetherRepositories )
+ {
+ super();
+ this.repositorySystem = repositorySystem;
+ this.artifactHandlerManager = artifactHandlerManager;
+ this.session = session;
+ this.aetherRepositories = aetherRepositories;
+ }
@Override
- public CollectorResult collectDependencies( final ProjectBuildingRequest buildingRequest,
- org.apache.maven.model.Dependency root )
+ public CollectorResult collectDependencies( org.apache.maven.model.Dependency root )
throws DependencyCollectorException
{
ArtifactTypeRegistry typeRegistry =
@@ -71,11 +78,11 @@
CollectRequest request = new CollectRequest();
request.setRoot( toDependency( root, typeRegistry ) );
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
+ public CollectorResult collectDependencies( DependableCoordinate root )
throws DependencyCollectorException
{
ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getType() );
@@ -88,11 +95,11 @@
CollectRequest request = new CollectRequest();
request.setRoot( new Dependency( aetherArtifact, null ) );
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
+ public CollectorResult collectDependencies( Model root )
throws DependencyCollectorException
{
// Are there examples where packaging and type are NOT in sync
@@ -130,19 +137,12 @@
request.setManagedDependencies( aetherManagerDependencies );
}
- return collectDependencies( buildingRequest, request );
+ return collectDependencies( request );
}
- private CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, CollectRequest request )
+ private CollectorResult collectDependencies( CollectRequest request )
throws DependencyCollectorException
{
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
request.setRepositories( aetherRepositories );
try
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java
new file mode 100644
index 0000000..53823f8
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java
@@ -0,0 +1,44 @@
+package org.apache.maven.shared.transfer.dependencies.collect.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
+import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
+import org.apache.maven.shared.transfer.dependencies.collect.CollectorResult;
+import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
+
+/**
+ *
+ * @author Robert Scholte
+ */
+public interface MavenDependencyCollector
+{
+
+ CollectorResult collectDependencies( Dependency root )
+ throws DependencyCollectorException;
+
+ CollectorResult collectDependencies( DependableCoordinate root )
+ throws DependencyCollectorException;
+
+ CollectorResult collectDependencies( Model root )
+ throws DependencyCollectorException;
+
+}
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
index 2c1d7ea..f3a6866 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
@@ -20,7 +20,10 @@
*/
import java.util.Collection;
+import java.util.List;
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
@@ -57,12 +60,8 @@
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- DependencyResolver effectiveArtifactResolver = container.lookup( DependencyResolver.class, hint );
-
- return effectiveArtifactResolver.resolveDependencies( buildingRequest, coordinates, managedDependencies,
- filter );
+ return getMavenDependencyResolver( buildingRequest ).resolveDependencies( coordinates, managedDependencies,
+ filter );
}
catch ( ComponentLookupException e )
{
@@ -78,11 +77,7 @@
validateParameters( buildingRequest, coordinate, filter );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- DependencyResolver effectiveArtifactResolver = container.lookup( DependencyResolver.class, hint );
-
- return effectiveArtifactResolver.resolveDependencies( buildingRequest, coordinate, filter );
+ return getMavenDependencyResolver( buildingRequest ).resolveDependencies( coordinate, filter );
}
catch ( ComponentLookupException e )
{
@@ -98,11 +93,7 @@
validateParameters( buildingRequest, model, filter );
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- DependencyResolver effectiveArtifactResolver = container.lookup( DependencyResolver.class, hint );
-
- return effectiveArtifactResolver.resolveDependencies( buildingRequest, model, filter );
+ return getMavenDependencyResolver( buildingRequest ).resolveDependencies( model, filter );
}
catch ( ComponentLookupException e )
{
@@ -164,6 +155,48 @@
}
}
+
+ private MavenDependencyResolver getMavenDependencyResolver( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, DependencyResolverException
+ {
+ ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class );
+
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem m31RepositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
+
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
+ "toRepos",
+ List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ return new Maven31DependencyResolver( m31RepositorySystem, artifactHandlerManager, session,
+ aetherRepositories );
+ }
+ else
+ {
+ org.sonatype.aether.RepositorySystem m30RepositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
+ (List<org.sonatype.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
+ "toRepos",
+ List.class,
+ buildingRequest.getRemoteRepositories() );
+
+ return new Maven30DependencyResolver( m30RepositorySystem, artifactHandlerManager, session,
+ aetherRepositories );
+
+ }
+ }
private void validateBuildingRequest( ProjectBuildingRequest buildingRequest )
{
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
index 9182330..806d415 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
@@ -29,14 +29,10 @@
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Model;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.filter.resolve.transform.SonatypeAetherFilterTransformer;
import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
@@ -56,20 +52,30 @@
/**
*
*/
-@Component( role = DependencyResolver.class, hint = "maven3" )
class Maven30DependencyResolver
- implements DependencyResolver
+ implements MavenDependencyResolver
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final ArtifactHandlerManager artifactHandlerManager;
+
+ private final RepositorySystemSession session;
+
+ private final List<RemoteRepository> aetherRepositories;
+
+ Maven30DependencyResolver( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager,
+ RepositorySystemSession session, List<RemoteRepository> aetherRepositories )
+ {
+ super();
+ this.repositorySystem = repositorySystem;
+ this.artifactHandlerManager = artifactHandlerManager;
+ this.session = session;
+ this.aetherRepositories = aetherRepositories;
+ }
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- DependableCoordinate coordinate,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( DependableCoordinate coordinate,
TransformableFilter dependencyFilter )
// CHECKSTYLE_ON: LineLength
throws DependencyResolverException
@@ -80,20 +86,14 @@
Dependency aetherRoot = toDependency( coordinate, typeRegistry );
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
- return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
+ return resolveDependencies( aetherRepositories, dependencyFilter, request );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- Model model,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( Model model,
TransformableFilter dependencyFilter )
// CHECKSTYLE_ON: LineLength
throws DependencyResolverException
@@ -108,11 +108,6 @@
Dependency aetherRoot = new Dependency( aetherArtifact, null );
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
ArtifactTypeRegistry typeRegistry =
@@ -140,13 +135,12 @@
request.setManagedDependencies( aetherManagerDependencies );
}
- return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
+ return resolveDependencies( aetherRepositories, dependencyFilter, request );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.model.Dependency> mavenDependencies,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( Collection<org.apache.maven.model.Dependency> mavenDependencies,
Collection<org.apache.maven.model.Dependency> managedMavenDependencies,
TransformableFilter filter )
// CHECKSTYLE_ON: LineLength
@@ -193,20 +187,14 @@
}
}
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
CollectRequest request =
new CollectRequest( aetherDependencies, aetherManagedDependencies, aetherRepositories );
- return resolveDependencies( buildingRequest, aetherRepositories, filter, request );
+ return resolveDependencies( aetherRepositories, filter, request );
}
// CHECKSTYLE_OFF: LineLength
- private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- List<RemoteRepository> aetherRepositories,
+ private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( List<RemoteRepository> aetherRepositories,
TransformableFilter dependencyFilter,
CollectRequest request )
throws DependencyResolverException
@@ -220,9 +208,6 @@
depFilter = dependencyFilter.transform( new SonatypeAetherFilterTransformer() );
}
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
final List<ArtifactResult> dependencyResults =
repositorySystem.resolveDependencies( session, request, depFilter );
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
index c4f53cf..7bbd6fc 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
@@ -29,14 +29,10 @@
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Model;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.filter.resolve.transform.EclipseAetherFilterTransformer;
import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -56,20 +52,30 @@
/**
*
*/
-@Component( role = DependencyResolver.class, hint = "maven31" )
class Maven31DependencyResolver
- implements DependencyResolver
+ implements MavenDependencyResolver
{
- @Requirement
private RepositorySystem repositorySystem;
- @Requirement
private ArtifactHandlerManager artifactHandlerManager;
+ private final RepositorySystemSession session;
+
+ private final List<RemoteRepository> aetherRepositories;
+
+ Maven31DependencyResolver( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager,
+ RepositorySystemSession session, List<RemoteRepository> aetherRepositories )
+ {
+ super();
+ this.repositorySystem = repositorySystem;
+ this.artifactHandlerManager = artifactHandlerManager;
+ this.session = session;
+ this.aetherRepositories = aetherRepositories;
+ }
+
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- DependableCoordinate coordinate,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( DependableCoordinate coordinate,
TransformableFilter dependencyFilter )
throws DependencyResolverException
// CHECKSTYLE_ON: LineLength
@@ -80,20 +86,14 @@
Dependency aetherRoot = toDependency( coordinate, typeRegistry );
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
- return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
+ return resolveDependencies( aetherRepositories, dependencyFilter, request );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- Model model,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( Model model,
TransformableFilter dependencyFilter )
// CHECKSTYLE_ON: LineLength
throws DependencyResolverException
@@ -108,11 +108,6 @@
Dependency aetherRoot = new Dependency( aetherArtifact, null );
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepositories =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
-
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
ArtifactTypeRegistry typeRegistry =
@@ -140,13 +135,12 @@
request.setManagedDependencies( aetherManagerDependencies );
}
- return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
+ return resolveDependencies( aetherRepositories, dependencyFilter, request );
}
@Override
// CHECKSTYLE_OFF: LineLength
- public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection<org.apache.maven.model.Dependency> mavenDependencies,
+ public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( Collection<org.apache.maven.model.Dependency> mavenDependencies,
Collection<org.apache.maven.model.Dependency> managedMavenDependencies,
TransformableFilter filter )
throws DependencyResolverException
@@ -193,19 +187,13 @@
}
}
- @SuppressWarnings( "unchecked" )
- List<RemoteRepository> aetherRepos =
- (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
- buildingRequest.getRemoteRepositories() );
+ CollectRequest request = new CollectRequest( aetherDeps, aetherManagedDependencies, aetherRepositories );
- CollectRequest request = new CollectRequest( aetherDeps, aetherManagedDependencies, aetherRepos );
-
- return resolveDependencies( buildingRequest, aetherRepos, filter, request );
+ return resolveDependencies( aetherRepositories, filter, request );
}
// CHECKSTYLE_OFF: LineLength
- private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- List<RemoteRepository> aetherRepositories,
+ private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( List<RemoteRepository> aetherRepositories,
TransformableFilter dependencyFilter,
CollectRequest request )
throws DependencyResolverException
@@ -221,9 +209,6 @@
DependencyRequest depRequest = new DependencyRequest( request, depFilter );
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
final DependencyResult dependencyResults = repositorySystem.resolveDependencies( session, depRequest );
// Keep it lazy! Often artifactsResults aren't used, so transforming up front is too expensive
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java
new file mode 100644
index 0000000..da0222d
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java
@@ -0,0 +1,51 @@
+package org.apache.maven.shared.transfer.dependencies.resolve.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collection;
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
+import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
+import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
+import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
+import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
+
+/**
+ *
+ * @author Robert Scholte
+ *
+ */
+public interface MavenDependencyResolver
+{
+
+ Iterable<ArtifactResult> resolveDependencies( DependableCoordinate coordinate,
+ TransformableFilter dependencyFilter )
+ throws DependencyResolverException;
+
+ Iterable<ArtifactResult> resolveDependencies( Model model, TransformableFilter dependencyFilter )
+ throws DependencyResolverException;
+
+ Iterable<ArtifactResult> resolveDependencies( Collection<Dependency> mavenDependencies,
+ Collection<Dependency> managedMavenDependencies,
+ TransformableFilter filter )
+ throws DependencyResolverException;
+
+}
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
index b14ae41..a38dce6 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
@@ -28,6 +28,7 @@
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate;
import org.apache.maven.shared.transfer.repository.RepositoryManager;
+import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
@@ -41,22 +42,18 @@
*/
@Component( role = RepositoryManager.class )
class DefaultRepositoryManager
- implements RepositoryManager, Contextualizable
+ implements RepositoryManager, Contextualizable
{
private PlexusContainer container;
-
+
@Override
public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact )
{
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
-
- return effectiveRepositoryManager.getPathForLocalArtifact( buildingRequest, artifact );
+ return getMavenRepositoryManager( buildingRequest ).getPathForLocalArtifact( artifact );
}
- catch ( ComponentLookupException e )
+ catch ( ComponentLookupException | RepositoryManagerException e )
{
throw new IllegalStateException( e.getMessage(), e );
}
@@ -67,13 +64,9 @@
{
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
-
- RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
-
- return effectiveRepositoryManager.getPathForLocalArtifact( buildingRequest, coor );
+ return getMavenRepositoryManager( buildingRequest ).getPathForLocalArtifact( coor );
}
- catch ( ComponentLookupException e )
+ catch ( ComponentLookupException | RepositoryManagerException e )
{
throw new IllegalStateException( e.getMessage(), e );
}
@@ -91,51 +84,38 @@
pomCoordinate.setExtension( "pom" );
return getPathForLocalArtifact( buildingRequest, pomCoordinate );
}
-
+
try
{
-
- String hint = isMaven31() ? "maven31" : "maven3";
-
- RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
-
- return effectiveRepositoryManager.getPathForLocalMetadata( buildingRequest, metadata );
+ return getMavenRepositoryManager( buildingRequest ).getPathForLocalMetadata( metadata );
}
- catch ( ComponentLookupException e )
+ catch ( ComponentLookupException | RepositoryManagerException e )
{
throw new IllegalStateException( e.getMessage(), e );
}
}
@Override
- public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir )
+ public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
{
try
{
- String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
-
- RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
-
- return effectiveRepositoryManager.setLocalRepositoryBasedir( request, basedir );
+ return getMavenRepositoryManager( buildingRequest ).setLocalRepositoryBasedir( buildingRequest, basedir );
}
- catch ( ComponentLookupException e )
+ catch ( ComponentLookupException | RepositoryManagerException e )
{
throw new IllegalStateException( e.getMessage(), e );
}
}
@Override
- public File getLocalRepositoryBasedir( ProjectBuildingRequest request )
+ public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
{
try
{
- String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
-
- RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
-
- return effectiveRepositoryManager.getLocalRepositoryBasedir( request );
+ return getMavenRepositoryManager( buildingRequest ).getLocalRepositoryBasedir();
}
- catch ( ComponentLookupException e )
+ catch ( ComponentLookupException | RepositoryManagerException e )
{
throw new IllegalStateException( e.getMessage(), e );
}
@@ -170,15 +150,41 @@
return false;
}
}
+
+ private MavenRepositoryManager getMavenRepositoryManager( ProjectBuildingRequest buildingRequest )
+ throws ComponentLookupException, RepositoryManagerException
+ {
+ if ( isMaven31() )
+ {
+ org.eclipse.aether.RepositorySystem m31RepositorySystem =
+ container.lookup( org.eclipse.aether.RepositorySystem.class );
- /**
- * Injects the Plexus content.
- *
- * @param context Plexus context to inject.
- * @throws ContextException if the PlexusContainer could not be located.
- */
- public void contextualize( Context context )
- throws ContextException
+ org.eclipse.aether.RepositorySystemSession session =
+ (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ return new Maven31RepositoryManager( m31RepositorySystem, session );
+ }
+ else
+ {
+ org.sonatype.aether.RepositorySystem m30RepositorySystem =
+ container.lookup( org.sonatype.aether.RepositorySystem.class );
+
+ org.sonatype.aether.RepositorySystemSession session =
+ (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+ if ( isMaven302() )
+ {
+ return new Maven302RepositoryManager( m30RepositorySystem, session );
+
+ }
+ else
+ {
+ return new Maven30RepositoryManager( m30RepositorySystem, session );
+ }
+ }
+ }
+
+ public void contextualize( Context context ) throws ContextException
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
index 0bd1bab..29178f4 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
@@ -19,17 +19,20 @@
* under the License.
*/
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
-import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.repository.LocalRepository;
/**
*
*/
-@Component( role = RepositoryManager.class, hint = "maven302" )
class Maven302RepositoryManager
extends Maven30RepositoryManager
{
+ Maven302RepositoryManager( RepositorySystem repositorySystem, RepositorySystemSession session )
+ {
+ super( repositorySystem, session );
+ }
/**
* Aether-1.9+ (i.e. M3.0.2+) expects "default", not "enhanced" as repositoryType
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
index 9fbaea9..936ea12 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
@@ -22,15 +22,11 @@
import java.io.File;
import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.artifact.Artifact;
@@ -46,32 +42,29 @@
/**
*
*/
-@Component( role = RepositoryManager.class, hint = "maven3" )
class Maven30RepositoryManager
- implements RepositoryManager
+ implements MavenRepositoryManager
{
+ private final RepositorySystem repositorySystem;
- @Requirement
- private RepositorySystem repositorySystem;
-
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final RepositorySystemSession session;
+
+ Maven30RepositoryManager( RepositorySystem repositorySystem, RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.session = session;
+ }
@Override
- public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest,
- org.apache.maven.artifact.Artifact mavenArtifact )
+ public String getPathForLocalArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
{
Artifact aetherArtifact;
- RepositorySystemSession session;
-
// LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
try
{
aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
}
catch ( RepositoryManagerException e )
{
@@ -82,29 +75,17 @@
}
@Override
- public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, ArtifactCoordinate coordinate )
+ public String getPathForLocalArtifact( ArtifactCoordinate coordinate )
{
- Artifact aetherArtifact;
-
- RepositorySystemSession session;
+ Artifact aetherArtifact = toArtifact( coordinate );
// LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
- try
- {
- aetherArtifact = toArtifact( coordinate );
-
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
}
@Override
- public String getPathForLocalMetadata( ProjectBuildingRequest buildingRequest, ArtifactMetadata metadata )
+ public String getPathForLocalMetadata( ArtifactMetadata metadata )
{
Metadata aetherMetadata =
new DefaultMetadata( metadata.getGroupId(),
@@ -112,15 +93,6 @@
metadata.storedInArtifactVersionDirectory() ? metadata.getBaseVersion() : null,
"maven-metadata.xml", Nature.RELEASE_OR_SNAPSHOT );
- RepositorySystemSession session;
- try
- {
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
return session.getLocalRepositoryManager().getPathForLocalMetadata( aetherMetadata );
}
@@ -166,17 +138,8 @@
}
@Override
- public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
+ public File getLocalRepositoryBasedir()
{
- RepositorySystemSession session;
- try
- {
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
return session.getLocalRepository().getBasedir();
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
index d7f4d6e..86ae613 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
@@ -22,15 +22,11 @@
import java.io.File;
import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.DefaultRepositoryCache;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -46,30 +42,30 @@
/**
*
*/
-@Component( role = RepositoryManager.class, hint = "maven31" )
class Maven31RepositoryManager
- implements RepositoryManager
+ implements MavenRepositoryManager
{
- @Requirement
- private RepositorySystem repositorySystem;
+ private final RepositorySystem repositorySystem;
- @Requirement
- private ArtifactHandlerManager artifactHandlerManager;
+ private final RepositorySystemSession session;
+
+ Maven31RepositoryManager( RepositorySystem repositorySystem,
+ RepositorySystemSession session )
+ {
+ this.repositorySystem = repositorySystem;
+ this.session = session;
+ }
@Override
- public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest,
- org.apache.maven.artifact.Artifact mavenArtifact )
+ public String getPathForLocalArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
{
Artifact aetherArtifact;
- RepositorySystemSession session;
// LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
try
{
aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
}
catch ( RepositoryManagerException e )
{
@@ -80,29 +76,15 @@
}
@Override
- public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, ArtifactCoordinate coordinate )
+ public String getPathForLocalArtifact( ArtifactCoordinate coordinate )
{
- Artifact aetherArtifact;
-
- RepositorySystemSession session;
-
- // LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
- try
- {
- aetherArtifact = toArtifact( coordinate );
-
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
+ Artifact aetherArtifact = toArtifact( coordinate );
return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
}
@Override
- public String getPathForLocalMetadata( ProjectBuildingRequest buildingRequest, ArtifactMetadata metadata )
+ public String getPathForLocalMetadata( ArtifactMetadata metadata )
{
Metadata aetherMetadata =
new DefaultMetadata( metadata.getGroupId(),
@@ -110,15 +92,6 @@
metadata.storedInArtifactVersionDirectory() ? metadata.getBaseVersion() : null,
"maven-metadata.xml", Nature.RELEASE_OR_SNAPSHOT );
- RepositorySystemSession session;
- try
- {
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
return session.getLocalRepositoryManager().getPathForLocalMetadata( aetherMetadata );
}
@@ -164,18 +137,8 @@
}
@Override
- public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
+ public File getLocalRepositoryBasedir()
{
- RepositorySystemSession session;
- try
- {
- session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- }
- catch ( RepositoryManagerException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
-
return session.getLocalRepository().getBasedir();
}
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/MavenRepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/MavenRepositoryManager.java
new file mode 100644
index 0000000..e494b15
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/MavenRepositoryManager.java
@@ -0,0 +1,67 @@
+package org.apache.maven.shared.transfer.repository.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
+
+/**
+ *
+ * @author Robert Scholte
+ */
+interface MavenRepositoryManager
+{
+ /**
+ * @param artifact {@link Artifact}
+ * @return the path of the local artifact.
+ */
+ String getPathForLocalArtifact( Artifact artifact );
+
+ /**
+ * @param coordinate {@link ArtifactCoordinate}
+ * @return the path for the local artifact.
+ */
+ String getPathForLocalArtifact( ArtifactCoordinate coordinate );
+
+ /**
+ * @param metadata {@link ArtifactMetadata}
+ * @return the path of the local metadata.
+ */
+ String getPathForLocalMetadata( ArtifactMetadata metadata );
+
+ /**
+ * Create a new {@code ProjectBuildingRequest} with an adjusted repository session.
+ *
+ * @param basedir the base directory of the local repository
+ * @return a new project building request
+ */
+ ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir );
+
+ /**
+ * Get the localRepositryBasedir as specified in the repository session of the request
+ *
+ * @return the local repository base directory
+ */
+ File getLocalRepositoryBasedir();
+}
diff --git a/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java b/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
index b5693f1..19d1939 100644
--- a/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
+++ b/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
@@ -28,22 +28,22 @@
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
-import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
import org.apache.maven.shared.transfer.artifact.install.internal.Maven30ArtifactInstaller;
import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
public class Maven30ArtifactInstallerTest extends PlexusTestCase
{
private final File localRepo = new File( "target/tests/local-repo" );
- private Maven30ArtifactInstaller installer;
+ private RepositorySystem repositorySystem;
@Override
public void setUp() throws Exception
{
super.setUp();
- installer = (Maven30ArtifactInstaller) super.lookup( ArtifactInstaller.class, "maven3" );
+ repositorySystem = lookup( RepositorySystem.class );
}
public void testInstall() throws Exception
@@ -67,7 +67,8 @@
Collection<Artifact> mavenArtifacts = Arrays.<Artifact>asList( artifact, artifactWithClassifier );
- installer.install( buildingRequest, mavenArtifacts );
+ MavenArtifactInstaller installer = new Maven30ArtifactInstaller( repositorySystem, repositorySession );
+ installer.install( mavenArtifacts );
assertTrue( new File( localRepo, "GROUPID/ARTIFACTID/VERSION/ARTIFACTID-VERSION.EXTENSION" ).exists() );
assertTrue( new File( localRepo, "GROUPID/ARTIFACTID/VERSION/ARTIFACTID-VERSION-CLASSIFIER.EXTENSION" ).exists() );
diff --git a/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java b/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
index faa9e1a..b426316 100644
--- a/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
+++ b/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
@@ -24,9 +24,9 @@
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
-import org.apache.maven.shared.transfer.repository.RepositoryManager;
import org.apache.maven.shared.transfer.repository.internal.Maven30RepositoryManager;
import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.impl.internal.EnhancedLocalRepositoryManager;
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
@@ -35,13 +35,13 @@
private final File localRepo = new File( "target/tests/local-repo" );
- private Maven30RepositoryManager repositoryManager;
+ private RepositorySystem repositorySystem;
@Override
public void setUp() throws Exception
{
super.setUp();
- repositoryManager = (Maven30RepositoryManager) super.lookup( RepositoryManager.class, "maven3" );
+ repositorySystem = lookup( RepositorySystem.class );
}
public void testSetLocalRepositoryBasedirSimple() throws Exception
@@ -53,6 +53,9 @@
File basedir = new File( "NEW/LOCAL/REPO" );
+ Maven30RepositoryManager repositoryManager =
+ new Maven30RepositoryManager( repositorySystem, buildingRequest.getRepositorySession() );
+
ProjectBuildingRequest newBuildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
@@ -68,6 +71,9 @@
File basedir = new File( "NEW/LOCAL/REPO" );
+ Maven30RepositoryManager repositoryManager =
+ new Maven30RepositoryManager( repositorySystem, buildingRequest.getRepositorySession() );
+
ProjectBuildingRequest newBuildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );