You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2015/04/21 22:30:17 UTC
svn commit: r1675195 - in
/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal:
DefaultArtifactInstaller.java Maven302ArtifactInstaller.java
Maven30ArtifactInstaller.java
Author: rfscholte
Date: Tue Apr 21 20:30:16 2015
New Revision: 1675195
URL: http://svn.apache.org/r1675195
Log:
Maven 3.0.2+ fix.
With Aether 1.9+ when calling RepositorySystem.newLocalRepositoryManager(LocalRepository) the repositoryType of the repo is expected to either be 'default' of 'simple', whereas previous versions of Aether expected 'enhanced' or 'simple' (matching the contentType)
Added:
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java
Modified:
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java?rev=1675195&r1=1675194&r2=1675195&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java Tue Apr 21 20:30:16 2015
@@ -40,7 +40,7 @@ public class DefaultArtifactInstaller
{
protected PlexusContainer container;
-
+
public void install( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts )
throws ArtifactInstallerException
{
@@ -57,13 +57,13 @@ public class DefaultArtifactInstaller
throw new ArtifactInstallerException( e.getMessage(), e );
}
}
-
+
public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir )
throws ArtifactInstallerException
{
try
{
- String hint = isMaven31() ? "maven31" : "maven3";
+ String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
ArtifactInstaller effectiveArtifactInstaller = container.lookup( ArtifactInstaller.class, hint );
@@ -83,6 +83,14 @@ public class DefaultArtifactInstaller
return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
}
+ /**
+ * @return true if the current Maven version is Maven 3.0.2
+ */
+ protected static boolean isMaven302()
+ {
+ return canFindCoreClass( "org.sonatype.aether.spi.localrepo.LocalRepositoryManagerFactory" );
+ }
+
private static boolean canFindCoreClass( String className )
{
try
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java?rev=1675195&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java Tue Apr 21 20:30:16 2015
@@ -0,0 +1,48 @@
+package org.apache.maven.shared.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 org.apache.maven.shared.artifact.install.ArtifactInstaller;
+import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.aether.repository.LocalRepository;
+
+@Component( role = ArtifactInstaller.class, hint = "maven302" )
+public class Maven302ArtifactInstaller
+ extends Maven30ArtifactInstaller
+{
+ /**
+ * Aether-1.9+ (i.e. M3.0.2+) expects "default", not "enhanced" as repositoryType
+ */
+ @Override
+ protected String resolveRepositoryType( LocalRepository localRepository )
+ {
+ String repositoryType;
+ if ( "enhanced".equals( localRepository.getContentType() ) )
+ {
+ repositoryType = "default";
+ }
+ else
+ {
+ // this should be "simple"
+ repositoryType = localRepository.getContentType();
+ }
+ return repositoryType;
+ }
+}
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java?rev=1675195&r1=1675194&r2=1675195&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java Tue Apr 21 20:30:16 2015
@@ -95,26 +95,33 @@ public class Maven30ArtifactInstaller
throw new ArtifactInstallerException( e.getMessage(), e );
}
}
-
+
public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
throws ArtifactInstallerException
{
ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
-
+
RepositorySystemSession session =
(RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
// "clone" session and replace localRepository
DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
-
+
// keep same repositoryType
- String repositoryType = session.getLocalRepository().getContentType();
+ String repositoryType = resolveRepositoryType( session.getLocalRepository() );
+
LocalRepositoryManager localRepositoryManager =
repositorySystem.newLocalRepositoryManager( new LocalRepository( basedir, repositoryType ) );
+
newSession.setLocalRepositoryManager( localRepositoryManager );
-
+
Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
-
+
return newRequest;
}
+
+ protected String resolveRepositoryType( LocalRepository localRepository )
+ {
+ return localRepository.getContentType();
+ }
}