You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2015/12/28 23:49:48 UTC

svn commit: r1722021 - in /maven/plugins/trunk/maven-project-info-reports-plugin: ./ src/it/MPIR-251/ src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java

Author: michaelo
Date: Mon Dec 28 22:49:48 2015
New Revision: 1722021

URL: http://svn.apache.org/viewvc?rev=1722021&view=rev
Log:
[MPIR-251] Artifact ###### has no file error regression

DependenciesRederer#hasSealed() implicitly resolved artifact to files and stopped at the first sealed artifact. Subsequent artifacts had no files attached. hasSealed() has been reduced to test for sealed only and a new method resolveArtifacts() has been extracted from the previous source.
Added an IT with a sealed JAR dependency from Maven Central which verifies that all dependencies are properly resolved.

IT contributed by: Hervé Boutemy <hb...@apache.org>

Added:
    maven/plugins/trunk/maven-project-info-reports-plugin/src/it/MPIR-251/
      - copied from r1722019, maven/plugins/branches/MPIR-251/src/it/MPIR-251/
Modified:
    maven/plugins/trunk/maven-project-info-reports-plugin/   (props changed)
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java

Propchange: maven/plugins/trunk/maven-project-info-reports-plugin/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Dec 28 22:49:48 2015
@@ -1 +1,2 @@
+/maven/plugins/branches/MPIR-251:1721764-1722019
 /maven/plugins/branches/MPIR-279:1636164-1639524

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java?rev=1722021&r1=1722020&r2=1722021&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java Mon Dec 28 22:49:48 2015
@@ -504,6 +504,8 @@ public class DependenciesRenderer
         List<Artifact> alldeps = dependencies.getAllDependencies();
         Collections.sort( alldeps, getArtifactComparator() );
 
+        resolveAtrifacts( alldeps );
+
         // i18n
         String filename = getI18nString( "file.details.column.file" );
         String size = getI18nString( "file.details.column.size" );
@@ -557,8 +559,8 @@ public class DependenciesRenderer
         {
             if ( artifact.getFile() == null )
             {
-                log.warn( "Artifact " + artifact.getId() + " has no file,"
-                    + " won't be listed in dependency files details." );
+                log.warn( "Artifact " + artifact.getId() + " has no file"
+                    + " and won't be listed in dependency files details." );
                 continue;
             }
 
@@ -1245,6 +1247,57 @@ public class DependenciesRenderer
         endTable();
     }
 
+    /**
+     * Resolves all given artifacts with {@link RepositoryUtils}.
+     *
+     ** @param artifacts not null
+     */
+    private void resolveAtrifacts( List<Artifact> artifacts )
+    {
+        for ( Artifact artifact : artifacts )
+        {
+            // TODO site:run Why do we need to resolve this...
+            if ( artifact.getFile() == null )
+            {
+                if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
+                {
+                    // can not resolve system scope artifact file
+                    continue;
+                }
+
+                try
+                {
+                    repoUtils.resolve( artifact );
+                }
+                catch ( ArtifactResolutionException e )
+                {
+                    log.error( "Artifact " + artifact.getId() + " can't be resolved.", e );
+                    continue;
+                }
+                catch ( ArtifactNotFoundException e )
+                {
+                    if ( ( dependencies.getProject().getGroupId().equals( artifact.getGroupId() ) )
+                        && ( dependencies.getProject().getArtifactId().equals( artifact.getArtifactId() ) )
+                        && ( dependencies.getProject().getVersion().equals( artifact.getVersion() ) ) )
+                    {
+                        log.warn( "The artifact of this project has never been deployed." );
+                    }
+                    else
+                    {
+                        log.error( "Artifact " + artifact.getId() + " not found.", e );
+                    }
+
+                    continue;
+                }
+
+                if ( artifact.getFile() == null )
+                {
+                    log.error( "Artifact " + artifact.getId() + " has no file, even after resolution." );
+                }
+            }
+        }
+    }
+
     private Object invoke( Object object, String method )
         throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
     {
@@ -1472,48 +1525,7 @@ public class DependenciesRenderer
     {
         for ( Artifact artifact : artifacts )
         {
-            // TODO site:run Why do we need to resolve this...
-            if ( artifact.getFile() == null )
-            {
-                if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
-                {
-                    // can not resolve system scope artifact file
-                    continue;
-                }
-
-                try
-                {
-                    repoUtils.resolve( artifact );
-                }
-                catch ( ArtifactResolutionException e )
-                {
-                    log.error( "Artifact " + artifact.getId() + " can't be resolved.", e );
-                    continue;
-                }
-                catch ( ArtifactNotFoundException e )
-                {
-                    if ( ( dependencies.getProject().getGroupId().equals( artifact.getGroupId() ) )
-                        && ( dependencies.getProject().getArtifactId().equals( artifact.getArtifactId() ) )
-                        && ( dependencies.getProject().getVersion().equals( artifact.getVersion() ) ) )
-                    {
-                        log.warn( "The artifact of this project has never been deployed." );
-                    }
-                    else
-                    {
-                        log.error( "Artifact " + artifact.getId() + " not found.", e );
-                    }
-
-                    continue;
-                }
-
-                if ( artifact.getFile() == null )
-                {
-                    log.error( "Artifact " + artifact.getId() + " has no file, even after resolution." );
-                    continue;
-                }
-            }
-
-            if ( JAR_SUBTYPE.contains( artifact.getType().toLowerCase() ) )
+            if ( artifact.getFile() != null && JAR_SUBTYPE.contains( artifact.getType().toLowerCase() ) )
             {
                 try
                 {
@@ -1525,7 +1537,7 @@ public class DependenciesRenderer
                 }
                 catch ( IOException e )
                 {
-                    log.error( "Artifact: " + artifact.getId() + " caused IOException: " + e.getMessage(), e );
+                    log.error( "Artifact " + artifact.getId() + " caused IOException: " + e.getMessage(), e );
                 }
             }
         }