You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gb...@apache.org on 2016/10/30 16:34:11 UTC

svn commit: r1767170 - in /maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install: ProjectInstaller.java internal/DefaultProjectInstaller.java

Author: gboue
Date: Sun Oct 30 16:34:11 2016
New Revision: 1767170

URL: http://svn.apache.org/viewvc?rev=1767170&view=rev
Log:
[MSHARED-598] Simplify ProjectInstaller by not requiring an ArtifactRepository

Part 1 - Making it so that the "install" interface doesn't take an ArtifactRepository as parameter, and has a single point of entry with regard to the path to the local repository to install to.

Modified:
    maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java
    maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java

Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java?rev=1767170&r1=1767169&r2=1767170&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java Sun Oct 30 16:34:11 2016
@@ -38,13 +38,13 @@ public interface ProjectInstaller
      * the appropriate repository.
      * 
      * <pre class="java">
-     *  @Parameter( defaultValue = "${session}", required=true, readonly = true)
-     *  MavenSession session;
-     *  @Parameter( defaultValue = "${project}", required=true, readonly = true)
-     *  MavenProject project;
+     *  &#64;Parameter( defaultValue = "${session}", required=true, readonly = true)
+     *  private MavenSession session;
+     *  &#64;Parameter( defaultValue = "${project}", required=true, readonly = true)
+     *  private MavenProject project;
      *  ..
      *  &#64;Component
-     *  ProjectInstaller installer;
+     *  private ProjectInstaller installer;
      *  
      *    ProjectInstallerRequest pir =
      *      new ProjectInstallerRequest()
@@ -52,19 +52,32 @@ public interface ProjectInstaller
      *         .setCreateChecksum( false )
      *         .setUpdateReleaseInfo( false );
      *  
-     *  installer.install (session.getProjectBuildingRequest(), pir, artifactRepository);
+     *  installer.install( session.getProjectBuildingRequest(), pir );
      * </pre>
      * 
+     * To set a different local repository than the current one in the Maven session, you can inject an instance of
+     * the <code>RepositoryManager</code> and set the path to the local repository, called 
+     * <code>localRepositoryPath</code>, as such:
+     * 
+     * <pre class="java">
+     *  &#64;Component
+     *  private RepositoryManager repositoryManager;
+     * 
+     *  buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepositoryPath );
+     * </pre>
      * 
      * @param projectBuildingRequest {@link ProjectBuildingRequest}
      * @param projectInstallerRequest {@link ProjectInstallerRequest}
-     * @param artifactRepository {@link ArtifactRepository}
      * @throws IOException In case of problems related to checksums.
      * @throws ArtifactInstallerException In case of problems to install artifacts.
      * @throws NoFileAssignedException If no file has been assigned to the project.
      */
+    void install( ProjectBuildingRequest projectBuildingRequest, ProjectInstallerRequest projectInstallerRequest )
+        throws IOException, ArtifactInstallerException, NoFileAssignedException;
+
+    // to be removed
     void install( ProjectBuildingRequest projectBuildingRequest, ProjectInstallerRequest projectInstallerRequest,
-                         ArtifactRepository artifactRepository )
+                  ArtifactRepository artifactRepository )
         throws IOException, ArtifactInstallerException, NoFileAssignedException;
 
 }

Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java?rev=1767170&r1=1767169&r2=1767170&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java Sun Oct 30 16:34:11 2016
@@ -65,11 +65,17 @@ public class DefaultProjectInstaller
 
     private final DualDigester digester = new DualDigester();
 
+    public void install( ProjectBuildingRequest buildingRequest, ProjectInstallerRequest request,
+                         ArtifactRepository artifactRepository )
+        throws IOException, ArtifactInstallerException, NoFileAssignedException
+    {
+        install( buildingRequest, request );
+    }
+
     /**
      * {@inheritDoc}
      */
-    public void install( ProjectBuildingRequest buildingRequest, ProjectInstallerRequest request,
-                                ArtifactRepository artifactRepository )
+    public void install( ProjectBuildingRequest buildingRequest, ProjectInstallerRequest request )
         throws IOException, ArtifactInstallerException, NoFileAssignedException
     {
 
@@ -102,7 +108,7 @@ public class DefaultProjectInstaller
                 installer.install( buildingRequest,
                                    Collections.<Artifact>singletonList( new ProjectArtifact( project ) ) );
                 installChecksums( buildingRequest, artifact, createChecksum );
-                addMetaDataFilesForArtifact( artifactRepository, artifact, metadataFiles, createChecksum );
+                addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles, createChecksum );
             }
         }
         else
@@ -121,7 +127,7 @@ public class DefaultProjectInstaller
             {
                 installer.install( buildingRequest, Collections.<Artifact>singletonList( artifact ) );
                 installChecksums( buildingRequest, artifact, createChecksum );
-                addMetaDataFilesForArtifact( artifactRepository, artifact, metadataFiles, createChecksum );
+                addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles, createChecksum );
             }
             else if ( !attachedArtifacts.isEmpty() )
             {
@@ -140,7 +146,7 @@ public class DefaultProjectInstaller
         {
             installer.install( buildingRequest, Collections.singletonList( attached ) );
             installChecksums( buildingRequest, attached, createChecksum );
-            addMetaDataFilesForArtifact( artifactRepository, attached, metadataFiles, createChecksum );
+            addMetaDataFilesForArtifact( buildingRequest, attached, metadataFiles, createChecksum );
         }
 
         installChecksums( metadataFiles );
@@ -171,7 +177,7 @@ public class DefaultProjectInstaller
     }
 
     // CHECKSTYLE_OFF: LineLength
-    private void addMetaDataFilesForArtifact( ArtifactRepository artifactRepository, Artifact artifact,
+    private void addMetaDataFilesForArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact,
                                               Collection<File> targetMetadataFiles, boolean createChecksum )
     // CHECKSTYLE_ON: LineLength
     {
@@ -185,7 +191,7 @@ public class DefaultProjectInstaller
         {
             for ( ArtifactMetadata metadata : metadatas )
             {
-                File metadataFile = getLocalRepoFile( artifactRepository, metadata );
+                File metadataFile = getLocalRepoFile( buildingRequest, metadata );
                 targetMetadataFiles.add( metadataFile );
             }
         }
@@ -271,13 +277,14 @@ public class DefaultProjectInstaller
      * Gets the path of the specified artifact metadata within the local repository. Note that the returned path need
      * not exist (yet).
      *
+     * @param buildingRequest The project building request, must not be <code>null</code>.
      * @param metadata The artifact metadata whose local repo path should be determined, must not be <code>null</code>.
      * @return The absolute path to the artifact metadata when installed, never <code>null</code>.
      */
-    private File getLocalRepoFile( ArtifactRepository artifactRepository, ArtifactMetadata metadata )
+    private File getLocalRepoFile( ProjectBuildingRequest buildingRequest, ArtifactMetadata metadata )
     {
-        String path = artifactRepository.pathOfLocalRepositoryMetadata( metadata, artifactRepository );
-        return new File( artifactRepository.getBasedir(), path );
+        String path = repositoryManager.getPathForLocalMetadata( buildingRequest, metadata );
+        return new File( repositoryManager.getLocalRepositoryBasedir( buildingRequest ), path );
     }
 
 }